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

Люди, задолбало сообщение типа:
Код: plaintext
1.
An undandled exсeption of type  'System.ObjectDisposedExсeption' occurred in system.windows.forms.dll 
Additional information: Cannot access a disposed object named "startForm"

Причём startForm - это стартовая форма, закрытая сразу после запуска приложенияи, а это сообщение возникает при выборе в комбобоксе формы, открытой второй по счёту после закрытия startForm, какая между ними может быть связь ... Ну никак не могу понять. Сделал бы тестовый проект, но не знаю, какие объекты в него совать. Может кто-нить подскажет, хотя бы в направлении копать.

Заранее благодарен.
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32638842
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно такой код приводит к ошибке System.ObjectDisposedException
Код: plaintext
1.
frm.Dispose()
frm.ShowDialog()
т.е. обращение к объекту (его методам и/или свойствам) после его удаления (disposed), но ссылка на него еще где-то хранится и может быть использована

а связи, так это могут быть parent-child отношения между первой и второй формой ???
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32638861
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще странно, на этой форме не один комбобокс, а ошибка возникает именно на этом, т.е. как я понимаю, что этот ком-бокс каким-то образом использует свойства и методы закрытой startForm ?
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32638873
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тяжело без текста программы. возможно используются к.л. объекты, определенные в первой форме при заполнении этого комбо на второй форме ???
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32638960
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да текст не проблема, может я действительно ослеп ?


Код: plaintext
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
 'текст по комбобоксу 
 'Заполнение комбобокса по двигателям 
                Dim cmdEng As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand
                Dim daEng As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(cmdEng)
                Dim dtsEng As DataSet = New AutoOtis.DataSetAutoOtis

                cmdEng.Connection = cn
                cmdEng.CommandType = CommandType.StoredProcedure
                cmdEng.CommandText = "UP_SelectCatEngin"
                cmdEng.Parameters.Add(New System.Data.SqlClient.SqlParameter("@IDModel", SqlDbType.Int,  4 ))
                cmdEng.Parameters( 0 ).Direction = ParameterDirection.Input
                cmdEng.Parameters( 0 ).Value = Me.ComboBox1.SelectedValue

                dtsEng.Tables.Add("UP_SelectCatEngin")
                daEng.Fill(dtsEng, "UP_SelectCatEngin")

                Me.cbxTypeEngine.DataSource = dtsEng.Tables("UP_SelectCatEngin")
                Me.cbxTypeEngine.ValueMember = "IDModel"
                Me.cbxTypeEngine.DisplayMember = "ModelEng"

 'текст долбаной startForm 

Public Class startForm
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public m_context As ApplicationContext

    Public Sub New(ByVal context As ApplicationContext)
        MyBase.New()

        Me.m_context = context
        Me.m_context.MainForm = Me
         'This call is required by the Windows Form Designer. 
        InitializeComponent()

         'Add any initialization after the InitializeComponent() call 

    End Sub

     'Form overrides dispose to clean up the component list. 
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)

    End Sub

     'Required by the Windows Form Designer 
    Private components As System.ComponentModel.IContainer

     'NOTE: The following procedure is required by the Windows Form Designer 
     'It can be modified using the Windows Form Designer.   
     'Do not modify it using the code editor. 
    Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(startForm))
        Me.ListBox1 = New System.Windows.Forms.ListBox
        Me.Button1 = New System.Windows.Forms.Button
        Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
        Me.SuspendLayout()
         ' 
         'ListBox1 
         ' 
        Me.ListBox1.BackColor = System.Drawing.Color.LightSteelBlue
        Me.ListBox1.Font = New System.Drawing.Font("Papyrus",  14 . 25 !, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline), System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType( 0 , Byte))
        Me.ListBox1.ImeMode = System.Windows.Forms.ImeMode.NoControl
        Me.ListBox1.ItemHeight =  30 
        Me.ListBox1.Location = New System.Drawing.Point( 0 ,  0 )
        Me.ListBox1.Name = "ListBox1"
        Me.ListBox1.Size = New System.Drawing.Size( 122 ,  154 )
        Me.ListBox1.TabIndex =  2 
        Me.ListBox1.UseTabStops = False
         ' 

        Me.SqlConnection1.ConnectionString = "workstation id=""SPOSAD-LH2MILX6"";packet size=4096;integrated security=SSPI;data s" & _
            "ource=""sposad-LH2MILX6"";persist security info=False;initial catalog=OtisAuto"
         'Button1 
         ' 
        Me.Button1.BackColor = System.Drawing.SystemColors.InactiveCaption
        Me.Button1.ForeColor = System.Drawing.SystemColors.HotTrack
        Me.Button1.Location = New System.Drawing.Point( 513 ,  4 )
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size( 64 ,  25 )
        Me.Button1.TabIndex =  3 
        Me.Button1.Text = "Выбрать"
        Me.Button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
         ' 
         'startForm 
         ' 
        Me.AutoScale = False
        Me.AutoScaleBaseSize = New System.Drawing.Size( 5 ,  13 )
        Me.BackgroundImage = CType(resources.GetObject("$this.BackgroundImage"), System.Drawing.Image)
        Me.ClientSize = New System.Drawing.Size( 608 ,  320 )
        Me.ControlBox = False
        Me.Controls.Add(Me.Button1)
        Me.Controls.Add(Me.ListBox1)
        Me.Cursor = System.Windows.Forms.Cursors.Default
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Me.MaximizeBox = False
        Me.MinimizeBox = False
        Me.Name = "startForm"
        Me.ShowInTaskbar = False
        Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
        Me.Text = "База ОТИС"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub startForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim cm As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand
            cm.CommandType = CommandType.StoredProcedure
            cm.CommandText = "UP_AutenUser"   'ХП, определяющая роли (в данном случае - компании), в которых участвует текущий юзер 
            cm.Connection = Me.SqlConnection1

            Dim prGroup As SqlClient.SqlParameter = New SqlClient.SqlParameter
            prGroup.ParameterName = "@count"
            prGroup.SqlDbType = SqlDbType.Int
            prGroup.Direction = ParameterDirection.Output
            cm.Parameters.Add(prGroup)

            Dim IntCoun As String
            Dim myReader As SqlClient.SqlDataReader
            Me.SqlConnection1.Open()
            myReader = cm.ExecuteReader()
            Me.ListBox1.BeginUpdate()
            While myReader.Read()
                IntCoun = myReader.GetString( 0 )
                Me.ListBox1.Items.Add(IntCoun)
            End While
            Me.ListBox1.EndUpdate()
            myReader.Close()
            Me.SqlConnection1.Close()

        Catch exc As Exception
            MsgBox(exc.Message)
        End Try
    End Sub

    Dim Message As String
    Dim Caption As String = "ПОДТВЕРЖДЕНИЕ"
    Dim Buttons As Integer = MessageBoxButtons.YesNo
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim frm As BasicCover = New BasicCover
        Dim Result As DialogResult

        frm.strSQL = Me.SqlConnection1.ConnectionString
        frm.strGroupUser = Me.ListBox1.SelectedItem
        If frm.strGroupUser = "" Then
            MsgBox("Вы не выбрали компанию, с данными которой хотите работать. Выберите компанию и нажмите кнопку Выбрать")
            Exit Sub
        End If
        Me.m_context.MainForm = frm
        Message = "Вы выбрали работу с базой " & frm.strGroupUser & ". Подтвердите Ваш выбор, нажав ОК" & Chr( 13 ) & _
"Если хотите изменить выбор, то нажмите Нет"
        Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _
        MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
         'frm.Label1.Text = frm.strGroupUser 
        If Result = DialogResult.Yes Then
            Close()
            frm.Show()
            frm.Activate()
            frm.Activate()
        End If

    End Sub
End Class
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32639242
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cmdEng.Connection = cn

А cn - откуда растет?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32639278
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно что проблема здесь

Код: plaintext
1.
Close()
frm.Show()
Что есть BasicCover?
А если во это

Код: plaintext
Me.m_context.MainForm = frm

воткнуть после закрытия.

Такие вот подозрения :)

Magnus
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32639370
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
cmdEng.Connection = cn

А cn - откуда растет?

Код: plaintext
 uid  =  S a


Прошу прощения, надо было сразу написать. в тексте заполняются 2 ком-бокса, просто с одним проблем нет, я и привёл код только на второй. а на оба стоит
Код: plaintext
1.
2.
dim cn as system.data.sqlclient.sqlconnection = new system.data.sqlclient.sqlconnection 

cn.ConnectionString=AutoOtis.BasicCover.strSQL

Magnus23Что есть BasicCover?

Это главная форма приложения, которая открывается после закрытия StartForm, и из его меню открывается уже форма с этим проклятущим комбобоксом.
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32640304
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте все таки сделать тестовый проект по проблеме

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32641189
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то я сам д-к, вместо вместо того, чтобы обработать событие на комбобоксе SelectedValueChanged, я код написал на событие Сlick. После того, как переписал на SelectedValueChanged, сообщение это нехорошее перестало выскакивать и всё заработало почти как надо, почти - это потому, что ... ну вот рядом мой же пост. Но всё-таки всё равно не понимаю - что Click, что SelectedValueChanged, но причём тут форма, закрытая через одну перед проблемной ? Пробовал кстати заполнять комбобокс не наследуя ничего, всё для него делал совершенно отдельно - одна фигня. А вот сменил Click на SelectedValueChanged и вроде всё в порядке ... почему ...
...
Рейтинг: 0 / 0
Точнее не могу, но может у корифеев вспомнятся аналогии
    #32641197
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я же ну вот рядом мой же пост

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


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