Ошибка при выборе опции из DialogResult

#c# #messagebox

#c# #messagebox

Вопрос:

У меня возникла проблема при выборе Yesв моем окне сообщений с помощью кнопок YesилиNo.

 Object reference not set to an instance of an object.
  

Из строки:

 AddEntryWindow addWindow = new AddEntryWindow
    (this, storedAuth.UserName, storedAuth.Password);
  

Я не понимаю, в чем проблема, поскольку несколько строк после этого — это одно и то же утверждение. Как я могу это исправить?

Исправлено

 private void tsmiAddEntry_Click(object sender, EventArgs e)
{
    if (storedAuth == null)
    {
        DialogResult result = MessageBox.Show
            ("You must log in before you add an entry." 
              Environment.NewLine   "You want to authenticate?",
            "Information", MessageBoxButtons.YesNo, 
            MessageBoxIcon.Information);

        if (result == DialogResult.Yes)
        {
            AuthenticationWindow authWindow = 
                new AuthenticationWindow();
            authWindow.ShowDialog();
            storedAuth = authWindow.Resu<

            AddEntryWindow addWindow = new AddEntryWindow
                (this, storedAuth.UserName, storedAuth.Password);
            addWindow.ShowDialog();
        }
    }
    else
    {
        AddEntryWindow addWindow = new AddEntryWindow
            (this, storedAuth.UserName, storedAuth.Password);
        addWindow.ShowDialog();
    }
}
  

Ответ №1:

Вы обращаетесь к свойствам storedAuth , но чуть выше вы отметили, что storedAuth это значение равно null , поэтому этот код гарантированно выдает a NullReferenceException

Комментарии:

1. Боже, ты прав. Я неверно истолковал свой собственный вопрос. Я должен был открыть окно регистрации.

Ответ №2:

Посмотрите это утверждение, если (storedAuth == null)

и вы получаете доступ к свойству нулевого объекта. если это необходимый объект, то присвоите значение этому объекту, затем получите доступ к имени пользователя и паролю.

это причина ошибки.. вы не должны использовать storedAuth.Имя пользователя, storedAuth.Пароль) в следующей инструкции. используйте некоторое значение по умолчанию, например «» или «По умолчанию»

AddEntryWindow addWindow = новое AddEntryWindow ( this, storedAuth.UserName, storedAuth.Password ); addWindow.ShowDialog();