powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Cannot access a disposed object named ...
11 сообщений из 11, страница 1 из 1
Cannot access a disposed object named ...
    #32582265
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток !!!

Помогите кто знает пожалуйста.
В приложенном к сообщению архиве находится часть проекта, в котором из меню начальной формы открывается вторая форма. Если закрыть эту вторую форму и снова открыть её из того же меню, то вылетает exeption, указанный в сабж.
Подскажите пожалуйста, что сделать, чтобы форма нормально открывалась и закрывалась.

Спасибо.
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32582284
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, что не стал пересылать проект, я думаю и так всё станет ясно...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Try
            'объявлять вторую форму нужно в процедуре...
            Dim frm As RegisterAction = New RegisterAction
            frm.Show()
        Catch exe As Exception
            MsgBox(exe.Message)
        End Try
End Sub
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32582287
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPS... уточнение... :)) ... объявлять можно, и даже, наверное нужно вне процедур, а присваивать значение New, непосредственно в процедуре...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Friend Shared frm As RegisterAction

Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Try
            frm = New RegisterAction
            frm.Show()
        Catch exe As Exception
            MsgBox(exe.Message)
        End Try
End Sub

P.S. Почему-то, захотелось объявить её именно как Friend Shared, на всякий случай (можно будет обрасчаться и из других форм)
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32582319
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с vladgrig.
В данном случае экземпляр класса RegisterAction создавать заранее не надо.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32582321
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Количество создаваемых форм ложиться на ваши плечи и под вашу ответственность.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583105
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой спасибо всем и Sa и vladgrig.

Даже не ожидал, что так быстро ответите, поскольку задал вопрос аж ночью. Поэтому залез в форум только сейчас и прошу прощения за задержку с ответом.
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583230
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, но забыл сразу спросить - а как отследить количество количество открытых экземпляров формы ?.

PS: прошу прощения за назойливость, но нормальной литературы по VB.NET крайне мало. Достаточно сказать, что создание заранее экземпляра класса для ограничения их количества я взял из книги, следствием чего и явился этот мой топик.

Спасибо.
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583267
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это не MDI, то позаботиться об этом придется в ручную. Например, ввести учет, что открывается, а что закрывается.

Я так понял вас интересует этот конкретный пример, где требуется чтобы открывалась только одна форма RegisterAction?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583271
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sa

Да, именно так.
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583363
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
требуется чтобы открывалась только одна форма RegisterAction

Я бы сделал следующим образом:

Код в форме RegisterAction:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Private Shared m_instance As RegisterAction

    Private Sub RegisterAction_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        m_instance = Me
    End Sub

    Friend Shared Function GetInstance() As RegisterAction
        If m_instance Is Nothing Then
            m_instance = New RegisterAction
        End If
        Return m_instance
    End Function

    Private Sub RegisterAction_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        m_instance = Nothing
    End Sub

Код в BasicCover
Код: plaintext
1.
2.
3.
4.
5.
    Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Dim f As RegisterAction = RegisterAction.GetInstance()
        f.Show()
        f.Activate()
    End Sub

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Cannot access a disposed object named ...
    #32583654
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Sa !

А я уж собирался на каждую форму заводить счётчик и проверять каждый раз его значание. Во блин, никак не могу оставить своих аксессовских привычек.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Cannot access a disposed object named ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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