Страница: 1 |
Страница: 1 |
Вопрос: Помогите с классами
Добавлено: 16.05.05 12:21
Автор вопроса: Екатерина
у меня в проекте
Public Class ClNormalesNotes.vb
в нем создаю
Public ClParam As New Collection
Public ClSheet As New Collection
Public ClSwPart As New Collection
и форма GenNormales
Public MyFormGenNormales As New GenNormales
из ClNormalesNotes забиваю данные в компаненты формы
а потом мне надо по действию на форме обращатся к своим классам, но форма их не видит
оШибка
Object reference not set to an instance of an object.
Помогите пожалуйста
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 16.05.05 14:01
Пожалуйста, покажите код.
Номер ответа: 2
Автор ответа:
Екатерина
Вопросов: 23
Ответов: 25
Профиль | | #2
Добавлено: 16.05.05 14:15
<System.Runtime.InteropServices.ProgId("llNormalesNotes.ClNormalesNotes"> Public Class ClNormalesNotes
'Public Class ClNormales-Notes
Public MyNewExcel As Object
Public MyNewBook As Object
' Public MyNewSheet As Object
Public MyNewCells As Object
Public ClParam As New Collection ' Create a Collection object.
Public ClSheet As New Collection ' Create a Collection object.
Public ClSwPart As New Collection ' Create a Collection object.
Public MySheetDoubleClick As System.Windows.Forms.MouseEventArgs
'Dim ClNumber As Integer
Public s, k, i As Integer 'лист, комментарий-параметр, перечисление
Public kom As String 'комментарий
Public MyFormGenNormales As New GenNormales
' Далее функции например
Public Function LinkSheetAndValueStandartParam(ByVal s As Integer)
If ClSheet(s).Link Then
' теперь установив стартовую точку собираем оставшиеся параметры с листа
For k = 1 To ClParam.Count
' у кого есть диапазон
If Not ClParam(k).Diapazon Is Nothing Then
' идем по всем недоопределенным параметрам этого листа
If ClParam(k).List = s And ClParam(k).Value = "" Then
' для С и В параметров
If ClParam(k).Type = "С" Or ClParam(k).Type = "В" Then
ClParam(k).Value = MyNewBook.WorkSheets(s).Range(FindValueParam(s, k, ClSheet(s).LinkGor, ClSheet(s).LinkVer)).Value()
If ClParam(k).Type = "С" Then
MyFormGenNormales.ListBox3.Items.Add(ClParam(k).Name & " " & ClParam(k).Value & " " & ClParam(k).Dims)
End If
'MsgBox(ClParam(k).Name & " = " & ClParam(k).value)
End If
End If
If ClParam(k).List > s Then
k = ClParam.Count
End If
End If
Next k
End If
End Function
End Class
И есть два класса
Public Class ClParam
Public Book As String
Public List As Integer
'Public Link As String
'Public Link As Integer
Public Name As String
Public Diapazon As Excel.Range
Public ClToch As String
Public Isp As String
Public Var As String
Public Type As String
Public Formula As String
Public GapValue As String
Public Value As String
Public SW As String ' размер SW
Public Dims As String '
End Class
Public Class ClSheet
Public Name As String
Public MySheet As Excel.Worksheet
'Public ListDiapazon1 As String
'Public ListDiapazon2 As String
Public LinkInPar1 As Integer ' для связи по параметрам какому равен
Public LinkInPar2 As Integer
Public LinkPar1 As Integer ' для связи по параметрам какой на этом листе равен
Public LinkPar2 As Integer
Public LinkGor As Integer ' для связи при выборе
Public LinkVer As Integer
Public Link As Boolean
End Class
End Class
и ворма
Public Class GenNormales
Inherits System.Windows.Forms.Form
Public ClParam As New Collection ' Create a Collection object.
Public ClSheet As New Collection ' Create a Collection object.
Public ClSwPart As New Collection ' Create a Collection object.
Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
MsgBox("!!!" & ClParam.Count)
End Sub
End Class
Номер ответа: 3
Автор ответа:
Екатерина
Вопросов: 23
Ответов: 25
Профиль | | #3
Добавлено: 16.05.05 14:34
Я пишу в VB Net
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 16.05.05 17:48
В общем, так как я всего кода не вижу, то подсказать, что нужно
исправить, не могу.
Могу лишь догадываться, что перед Вами стоит очень популярная проблема
- как из одного объекта получить доступ к членам другого...
Пусть у нас есть класс Class1, форма Form1... В Class1 есть процедура
StartAction, в Form1 - процедура ButtonClick...
Допустим, форма Form1 запускается при старте приложения... Потом
каким-то образом запускается процедура StartAction, которая должна
изменить некоторые параметры своего экземпляра класса. И после этого в
процедуре ButtonClick мы должны получить изменения, произведенный
процедурой StartAction... Правильно я понял задачу?
Если всё так, то тогда вот примерный код:
Class Class1
Public s As String
Public Sub StartAction
Me.s = "Вася"
End Sub
End Class
Class Form1
'Windows Forms Designer generated code и прочая чепуха......
Private MyClass1 As Class1
Private Sub LoadClass ()
'Здесь у нас создается экземпляр класса Class1
'и вызывается StartAction
Me.MyClass1 = New Class1
Me.MyClass1.StartAction
End Sub
Private Sub ButtonClick ()
MessageBox.Show (Me.MyClass1.s)
End Sub
End Class
Номер ответа: 5
Автор ответа:
Екатерина
Вопросов: 23
Ответов: 25
Профиль | | #5
Добавлено: 27.05.05 10:03
Дело в том, что мне не нужно создавать новый экземпляр уже существующего класса, необходимо из формы обращатся к уже созданным ранее экземплярам.
Все равно большое спасибо.
Буду очень рада, если подскажите ход решения...