Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> в констркторе this.Close(), чего следует опасаться 
:(
    Опции темы
darkness
Дата 24.7.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Ситуация следующая:
К примеру человек хочети открыть форму с таблицей, данные берутся из БД.... в кострукторе лежит код заполнение этого Грида и сам запрос в базу, но что если сама база говорит юзеру, что у него нет прав на эту таблицу. Тогда в дело вступает исключение - оно вещает, что мол доступа нет и....  по идее форма должна потом сама закрыться...

Так вот в catch я пишу this.Close()...
Прога начинает творить чудеса следующие:
форму с таблицей(обзовём её 1) я открываю через кнопку с другой (форма 2) - если я прав не имею - срабатывает исключение и форма 1 закрывается без проблем, но пытаюсь закрыть форму 2 как в ответ отладчик мне тыкает на:
Код

 protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

формы 2 и вещает Cannot access a disposed object. Object name: 'форма 1'.

Помогите разобраться

Это сообщение отредактировал(а) darkness - 24.7.2007, 10:04
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
ivashkanet
Дата 24.7.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



darkness, перенеси эту логику в OnLoad.
Конструктор должен просто создать объект. Дальше он начинает жить и уже сам занимается "обустройством своего внешнего вида".

P.S. А вообще, я бы сделал эту выборку до создания формы, а потом передать ее форму (и лучше не в конструкторе, а в каком-нибудь Initialize())

Добавлено через 29 секунд
Цитата(darkness @  24.7.2007,  10:03 Найти цитируемый пост)
формы 2 и вещает Cannot access a disposed object. Object name: 'форма 1'.

Конечно, он же еще не создан, а ты его уже удаляешь.
PM MAIL WWW ICQ   Вверх
darkness
Дата 24.7.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



ivashkanet, 
Цитата

перенеси эту логику в OnLoad.


перенёс. Когда генерируется исключение, форма становится просто неактивной - не закрывается.  smile  


Цитата

Конечно, он же еще не создан, а ты его уже удаляешь.

ты не совсем правильно понял... форма 1 вызывается через форму 2 с кнопки (расположенной на ф. 2, т.е она уже создана давно), потом когда я закрываю форму 1 (с this.Close()  в конструкторе) всё проходит без ошибок, но когда пытаюсь закрыть ф. 2 - отладчик начинает бесится... 
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
ivashkanet
Дата 24.7.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(darkness @  24.7.2007,  10:34 Найти цитируемый пост)
ты не совсем правильно понял...

Ну да,  smile 

Тогда хитрые места кода в студию!

Цитата(darkness @  24.7.2007,  10:34 Найти цитируемый пост)
Когда генерируется исключение

А ловить кто его будет? Несловленное исключение в ОнЛоаде это не так страшно как в Конструкторе, конечно, но все же.
PM MAIL WWW ICQ   Вверх
darkness
Дата 24.7.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



Цитата

Тогда хитрые места кода в студию!

вот эта форма 1 Load - событие и исключение я перехватываю  :
Код

private void cars_Load(object sender, EventArgs e)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(Form1.source))
                {
                    conn.Open();
                    adap = new MySqlDataAdapter("SELECT * FROM all_cars", conn);
                    adap.Fill(ds, "Cars");
                    daGrid.DataSource=ds.Tables["Cars"];
                    conn.Close()
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
                this.Close();
            }
        }


а это форма 2 (с котой загружается 1)
Код

 private void nextToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cars f = new cars();
            f.Show();
        }


Это сообщение отредактировал(а) darkness - 24.7.2007, 10:58
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
ivashkanet
Дата 24.7.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



darkness, пробема в другом месте. У меня аналогичный код отлично отрабатывает.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.