从form1读取对象到类vb.net

时间:2014-11-04 11:44:08

标签: vb.net

我需要阅读form1中存在的文本框的内容。到目前为止,我没有任何错误的问题,我创造了一个完美的功能。现在的问题是这个函数已经变得太大而无法保存在form1中,所以我创建了一个类,我将其导入到form1中。这个类包含以前包含在form1中的函数,现在编译器给了我这条消息:

  

"对非共享成员需要一个对象引用"

可能是因为他无法读取form1中的对象。 因此,我想知道如何访问此资源,我尝试导入form1类,如下所示:

Imports App.Form1 

班级的功能

public function Export()
     oSheet.Cells(2, 2).value = Oggettivo_1_1.Value 'oggettivo_1_1_.value is an object of form1
end function

但我总是得到同样的错误,是否有人可以帮助我?

1 个答案:

答案 0 :(得分:1)

Imports通常用于在NameSpace中提供Types(如类)。它没有提供对象引用,它是您收到的错误消息的关键部分。既然我们不知道这个类的创建方式和位置,那么通常的方法就是:

Public CLass Form1
   Private myClass As Class1        ' whatever you named it

   Sub Form_Load....
       myClass = New Class1(me)
       ...
    End Sub

由于您所描述的内容表明该类或多或少是表单的帮助器,因此该类需要对该表单的引用并且没有理由存在。因此,我们使用构造函数来传递表单引用:

Public Class1
    Private myFrm As Form1
    Public Sub New(frm As Form1)
        myFrm = frm
    End Sub

    public function Export()
         myFrm.oSheet.Cells(2, 2).value = ...
end function

现在,您的类可以使用本地表单引用引用表单。由于我们不知道您的应用程序是如何构造的,因此这允许表单引用类中的方法,并允许类引用表单中的内容。

在某些时候,如果/当您的应用程序成为类驱动或类导向时,您将要做一些不同的事情。