Исключение NullReferenceException было обработано - PullRequest
0 голосов
/ 16 декабря 2011

Приложение работает нормально - но если пользователь НИЧЕГО не выбирает из списка и вместо этого просто нажимает кнопку «Do We Match» - это приводит к сбою программы.Мне нужно, чтобы он выдавал ошибку, требующую, чтобы они щелкали звездочку в каждом списке (официальная ошибка - «Исключение нулевой ссылки не обрабатывается»).

Код для этой части:

// Method for starsign combinations
public void Combinations()
{
    ListBoxItem lbi = (ListBoxItem)yourListBox.SelectedItem;
    string yourListBoxValue = (string)lbi.Content;

    ListBoxItem lbi2 = (ListBoxItem)partnerListBox.SelectedItem;
    string partnerListBoxValue = (string)lbi2.Content;

    string listBoxValuesCombined = yourListBoxValue + partnerListBoxValue;

    if ((listBoxValuesCombined == "Aries" + "Aries") || (listBoxValuesCombined == "Aries" + "Aries"))
        resultTextBlock.Text = "On Fire - this is a hot combination!";

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Проверьте свойства SelectedItem ваших ListBoxes перед тем, как получить доступ к свойству Content каждого ListBoxItem. Поскольку вы хотите, чтобы оба ListBoxes имели значение, прежде чем продолжить, поместите эту проверку на null в верхней части вашего метода комбинаций:

public void Combinations()
{
  if (yourListBox.SelectedItem == null || partnerListBox.SelectedItem == null)
  {
    resultTextBlock.Text = "Please select a sign for yourself and your partner.";
    return;
  }

Если в ListBox не выбрано значение, свойство SelectedItem будет иметь значение null. Итак, когда вы получаете ListBoxItem выше:

ListBoxItem lbi = (ListBoxItem)yourListBox.SelectedItem;

lbi заканчивается значением null. NullReferenceException выдается, когда вы затем пытаетесь получить lbi.Content. Поскольку lbi имеет значение null, у него нет объекта для получения свойства Content.

0 голосов
/ 16 декабря 2011
public void Combinations()
{
    if ((ListBoxItem)yourListBox.SelectedItem == null 
      || (ListBoxItem)partnerListBox.SelectedItem == null) return;

    ListBoxItem lbi = (ListBoxItem)yourListBox.SelectedItem;
    string yourListBoxValue = (string)lbi.Content;

    ListBoxItem lbi2 = (ListBoxItem)partnerListBox.SelectedItem;
    string partnerListBoxValue = (string)lbi2.Content;



    string listBoxValuesCombined = yourListBoxValue + partnerListBoxValue;

    if ((listBoxValuesCombined == "Aries" + "Aries") || (listBoxValuesCombined == "Aries" + "Aries"))
        resultTextBlock.Text = "On Fire - this is a hot combination!";
...