Ошибка при выборе опции из DialogResult - PullRequest
0 голосов
/ 04 ноября 2011

У меня возникла проблема при выборе Да в моем MessageBox с кнопками Да или Нет .

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.Result;

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

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

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

1 голос
/ 04 ноября 2011

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

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

это причина ошибки. Вы не должны использовать хранимое имя_утверждения_пользователя, сохраненное_пароль) в следующем выражении.использовать некоторое значение по умолчанию, например "" или "По умолчанию"

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

...