Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 16.05.05 14:01
Пожалуйста, покажите код.

Ответить

Номер ответа: 2
Автор ответа:
 Екатерина



Вопросов: 23
Ответов: 25
 Профиль | | #2 Добавлено: 16.05.05 14:15
<System.Runtime.InteropServices.ProgId(";DllNormalesNotes.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-сайт: www.vbnet.ru
 Профиль | | #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
Дело в том, что мне не нужно создавать новый экземпляр уже существующего класса, необходимо из формы обращатся к уже созданным ранее экземплярам.
Все равно большое спасибо.
Буду очень рада, если подскажите ход решения...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам