#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();