Есть кусок кода, который формирует путь по шаблону с добавлением выбранных пунктов. WorkerList - это и есть ComboBox.
string TargetHost = HostBox.Text;
string WorkDirectory = @"C:\worker\" + SQLget.WorkerName(WorkerList.SelectedItem.ToString()) + "\\";
Далее идёт кнопка, которая по нажатию, в директорию копирует файлы и ставит задание. Если ComboBox пуста - я поймаю нулРефЭкс, что справедливо.
Своими граблями я так и не дошёл, почему не отлавливается в catch. Что сделал:
private void TaskButton_Click(object sender, EventArgs e) // Кнопка на вкладке планировщика. Размещает задания на сбор базы и ёё копирования.
{
try
{
string TargetHost = HostBox.Text;
string WorkDirectory = @"C:\worker\" + SQLget.WorkerName(WorkerList.SelectedItem.ToString()) + "\\";
SetState.CreatTask(TargetHost, WorkDirectory, true);
SetState.CreatCopyTask("ещё больше аргументов");
}
Далее я пробую так:
catch (Exception) when (IndexerList.SelectedItem.ToString() == null)
{
MessageBox.Show("Пусто!", "Ошибка");
}
Но, как вы поняли из темы, не взлетело.
Пробовал добавлять в тело трай такую фигню(сам нутром чую, что бред какой-то)
if (IndexerList.SelectedItem == null)
{
throw new NullReferenceException("Выберите индекс");
}
Так как у меня два поля(TextBox, ComboBox), я хочу чтобы на каждое незаполненное поле ловить своё исключение. В случае catch-when как у меня, событие не вызывается. Можно смело тыкать носом в главу учебника или или в msdn, где будет описано как отладить. Кармический монплезир гарантирую.
Когда IndexerList.SelectedItem
равен null
, в конструкции
try { }
catch (Exception) when (IndexerList.SelectedItem.ToString() == null) { }
валится NullReferenceException
, вот здесь: when (IndexerList.SelectedItem.ToString() == null)
Поэтому в этот блок catch
ты никогда не попадешь.
Правильнее делать так:
try { }
catch (NullReferenceException) when (IndexerList.SelectedItem == null) { }
catch { }
А еще лучше, вообще не провоцировать ексепшн, а вместо этого делать простую проверку:
private void TaskButton_Click(object sender, EventArgs e)
{
if (HostBox.Text == null)
{
MessageBox.Show("Пусто!", "Ошибка 1");
return;
}
if (WorkerList.SelectedItem == null)
{
MessageBox.Show("Пусто!", "Ошибка 2");
return;
}
// дальше делаешь, что хочешь...
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть проект на Xamarin Forms наnet standart 2
Есть родительская форма EditData, и дочерняя форма DataClassКак только открываю дочернюю форму там идет выгрузка данные с MS SQL в DataGridView, очень долго...
Есть код XAML и есть класс CustomVisualFrameworkElement, который унаследован от FrameworkElement и реализует с помощью Visual некоторые фигурыНо XAML почему то не видит...