Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при закрытии формы. / 25 сообщений из 26, страница 1 из 2
07.08.2013, 11:20
    #38357957
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Парни подскажите пожалуйста.

На форме кнопка, нажимаю перехожу на другую форму. Если нажать на крестик закрытия вылетает ошибка.

NullReferenceException was unhandled.

Object reference not set to an instance of an object.
...
Рейтинг: 0 / 0
07.08.2013, 11:36
    #38357989
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591Парни подскажите пожалуйста.

На форме кнопка, нажимаю перехожу на другую форму. Если нажать на крестик закрытия вылетает ошибка.

NullReferenceException was unhandled.

Object reference not set to an instance of an object.

что подсказать?
...
Рейтинг: 0 / 0
07.08.2013, 11:37
    #38357991
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
pation,
...
Рейтинг: 0 / 0
07.08.2013, 11:38
    #38357995
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

?
...
Рейтинг: 0 / 0
07.08.2013, 11:41
    #38358002
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
pation,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
private void ProceedMail(object sender, EventArgs e)
        {
            Tel.GridViewRowInfo trow = Mails.GetCurrentRow();
            MailAttributes ma = new MailAttributes();
            ma.To = Mails.GetCell("column_mFrom");
            ma.Subject = Mails.GetCell("column_mSubject");
            ma.filename = @"c:\tmp\currmail.html";
            ma.ClaimID = Convert.ToInt32(Claims.ID);

                string htmlbody = webBrowser1.Document.Body.InnerHtml;
                File.WriteAllText(string.Format(@"c:\tmp\{0}", "currmail.html"), htmlbody, Encoding.GetEncoding(1251));

                
                using (FormMail _fm = new FormMail(ma))
                {
                    
                    DialogResult fmd;
                    fmd = _fm.ShowDialog();

                    ma = (MailAttributes)_fm.Tag;
                    
                    if (ma.filename != "")
                    {

                        string[] filehtmlbody = File.ReadAllLines(ma.filename);


                        string htmlbodystr = "";

                        foreach (string tmpstr in filehtmlbody)
                        {
                            htmlbodystr = htmlbodystr + tmpstr;
                        }

                        cmdParametrs.Clear();
                        cmdParametrs.Add(Param(SqlDbType.NVarChar, ParameterDirection.Input, "@mSt", ma.St));
                       

                        using (UniDataAdapter daAddMail = new UniDataAdapter(dsHelpDesk, "tAl", "dbo.sp_Al", CommandType.StoredProcedure, cmdParametrs))
                        {
                            FileInfo fInfo = new FileInfo(ma.filename);
                            using (FileStream fStream = fInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                byte[] BinaryContent = new byte[fInfo.Length];
                                fStream.Read(BinaryContent, 0, (int)fInfo.Length);

                                foreach (string attachment in ma.AttachmentFileName)
                                {
                                    cmdParametrs.Clear();
                                    cmdParametrs.Add(Param(SqlDbType.Int, ParameterDirection.Input, "@atMl_ID", daAddMl.Value("ID")));
                                    

                                    UniDataAdapter daAddMailAttach = new UniDataAdapter(dsHelpDesk, "tAh", "dbo.sp_Ah", CommandType.StoredProcedure, cmdParametrs);
                                }
                            }
                        }
                    }

                }   
        }




Вот тут ошибку пишет
Код: c#
1.
ma = (MailAttributes)_fm.Tag;
...
Рейтинг: 0 / 0
07.08.2013, 13:40
    #38358229
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
авторma = (MailAttributes)_fm.Tag;
проверь что в _fm.Tag не null
...
Рейтинг: 0 / 0
07.08.2013, 13:48
    #38358248
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Ermak,

падает значение null. Получается, что при закрытии формы на кретик. Значение у нас null и происходит ошибка.

Нужно прописать условие?
...
Рейтинг: 0 / 0
07.08.2013, 14:34
    #38358336
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Спасибо всем, решил вот так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DialogResult fmd;
                    fmd = _fm.ShowDialog();
                    if (fmd == DialogResult.Cancel)
                    {
                        _fm.Show();
                    }
                    else
                    {

                    }
...
Рейтинг: 0 / 0
07.08.2013, 16:36
    #38358570
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

если форма закрыта cancelом, то показать форму еще раз. А где логика? Вам конечно виднее...
...
Рейтинг: 0 / 0
07.08.2013, 18:08
    #38358698
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris,

В смысле. Форма открывается при нажатии кнопки. Человек если не отправит через эту форму нечего форма просто эта закроется. А раньше ошибка вылетала.
...
Рейтинг: 0 / 0
07.08.2013, 18:10
    #38358700
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DialogResult fmd;
                    fmd = _fm.ShowDialog();
                    if (fmd == DialogResult.Cancel)
                    {
                        _fm.Show();
                    }
                    else
                    {

ТУТ ВЕСЬ КОД НАЧИНАЯ СО СТРОЧКИ ma = (MailAttributes)_fm.Tag;

                    }
...
Рейтинг: 0 / 0
07.08.2013, 20:22
    #38358836
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

и это работает?
...
Рейтинг: 0 / 0
07.08.2013, 20:24
    #38358841
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Объясни, зачем нужно вот это
Код: c#
1.
2.
3.
4.
if (fmd == DialogResult.Cancel)
                    {
                        _fm.Show();
                    }
...
Рейтинг: 0 / 0
08.08.2013, 14:04
    #38359662
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris, если нажали кнопку, а точнее крестик на форме, то форма закрывается. Что тут не понятного то?

Или вы видите другое решение этой задачи?

Без этого условия выходила ошибка, если есть другое решение тогда подскажите. У меня пока так работает и очень хорошо работает.
...
Рейтинг: 0 / 0
08.08.2013, 14:11
    #38359680
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591, непонятно зачем заново показывать только что закрытый диалог. Раз пользователь нажал крестик значит ему это окно не нужно, а ты снова его выводишь. Причем сначала ты показываещь форму как модальный даиалог, затем как обычное окно. Всё это и вызывает непонимание.
...
Рейтинг: 0 / 0
08.08.2013, 14:44
    #38359760
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris, да
...
Рейтинг: 0 / 0
08.08.2013, 14:51
    #38359780
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

зачем _fm.Show()?

То ли лыжи не едут, то ли...
...
Рейтинг: 0 / 0
08.08.2013, 15:02
    #38359797
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Я понял что вы подметили.

у меня _fm.Show(); а нужно по смыслу вот это _fm.Close();

Хотя так и так работает. ХЗ.
...
Рейтинг: 0 / 0
08.08.2013, 15:11
    #38359814
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

если ты получил DialogResult от ShowDialog, то это значит, что форма и так закрыта. Никакой Close не нужен.
...
Рейтинг: 0 / 0
08.08.2013, 15:19
    #38359826
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris, не понял все равно. На примере объясни пожалуйста.
...
Рейтинг: 0 / 0
08.08.2013, 15:23
    #38359835
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

ShowDialog возвращает результат тогда, когда пользователь закрывает диалог.

Код: c#
1.
2.
3.
4.
5.
6.
7.
if (someDialog_.ShowDialog() == DialogResult.IDOK)
{
// Здесь выполнение начнется не раньше, чем пользователь закроет диалог
....
}
//Здесь тоже
....
...
Рейтинг: 0 / 0
08.08.2013, 17:02
    #38360026
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris, не понял все равно.

Просто в моей программе при нажатии на крестик закрытия формы. Одно значение принимало null и программа закрывалась с ошибкой. Чтоб это избежать, я сделал условие если при нажатии на крестик не продолжало дальше выполняться код программы. Вот и все.

Я просто честно не пойму, что вы хотите показать. Прошу объяснить. Ибо вы меня поставили в тупик.
...
Рейтинг: 0 / 0
08.08.2013, 17:06
    #38360034
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591,

Попробуйте написать вот это
Код: c#
1.
2.
3.
4.
if (_fm.ShowDialog() == DialogResult.OK)
                    {
                        ТУТ ВЕСЬ КОД НАЧИНАЯ СО СТРОЧКИ ma = (MailAttributes)_fm.Tag;
                    }



вместо вашего кода из
авторСпасибо всем, решил вот так


Если не будет работать, то оставляйте все как есть сейчас.
...
Рейтинг: 0 / 0
08.08.2013, 17:19
    #38360057
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
Pallaris, Спасибо и так и так работает.
...
Рейтинг: 0 / 0
08.08.2013, 17:29
    #38360075
wiktor591
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при закрытии формы.
wiktor591, но видишь какая беда, допустим у нас будет 3 кнопки. И в твоем случаи уже ты не сможешь написать условие. Без объявленной переменной и т.д.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при закрытии формы. / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]