使用Reference - Visual Basic在另一个类库项目中添加对象的代码

时间:2016-03-09 17:13:40

标签: vb.net visual-studio

我有一个名为Odest Installer的Windows窗体项目。它是具有自定义功能的自定义安装程序。它由4种形式组成。我想要做的是我想要一些对象(例如文本框)使其源代码位于名为Multiple Installs Extension的类库项目中。我试过这个:

在多个安装扩展(类库项目)中:

Imports Odest_Installer

Dim getval As Integer
Public Class Class1
   Public Sub txtboxshow ()

      If TextBox1.Value < 3 Then
         Button4.Disabled = True
         TextBox1.Text = "3"
      Else
      EndIf
      If TextBox1.Value = 3 Then
         Button4.Disabled = True
      Else
      EndIf
      If TextBox1.Value > 1 Then
         Button5.Disabled = True
         TextBox1.Text = "1"
      Else
      EndIf
      If TextBox1.Value = 1 Then
         Button5.Disabled = True
      Else
      EndIf
   End Sub
   Public Sub btn4()
      getval = TextBox1.Value + 1
   End Sub
   Public Sub btn5()
      getval = TextBox1.Value - 1
   End Sub
End Class

在Odest安装程序(WindowsFormApplication)中:

Imports ClassLibrary1
Public Class Form 3
   Private Sub TextBox1.TextChanged() Handles TextBox1.TextChanged
      txtboxshow()
   End Sub  
   Private Sub Button4.OnClick() Handles Button1.Onclick
      btn4()
   End Sub
   Private Sub Button5.OnClick() Handles Button1.Onclick
      btn5()
   End Sub
End Class

TextBox1收到错误“未声明Textbox1。由于其保护级别可能无法访问”,即使在给予彼此引用之后也是如此。我在某处错了,或者你有另一种方式来引用这两个项目。 (注意:我不想在我的项目中添加多个安装扩展,以便它可以移植)

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题 - TextBoxes没有User属性,因此您每次都需要将.value属性转换为整数。

说实话 - 除非有必要将类库中的代码分开,否则你应该将它全部保存在表单的类定义中。

但是 - 如果您需要单独一个类中的代码,请尝试使用

不要尝试直接在类库中引用表单,而是更改类库定义,以便它们接受控件和getval作为参数,并更改代码以匹配。

喜欢这个

.text

Public Sub txtboxshow(tBox1 As TextBox, btn4 As Button, btn5 As Button) If CInt(tBox1.Text) < 3 Then btn4.Enabled = False tBox1.Text = "3" Else End If If CInt(tBox1.Text) = 3 Then btn4.Enabled = False Else End If If CInt(tBox1.Text) > 1 Then btn5.Enabled = False tBox1.Text = "1" Else End If If CInt(tBox1.Text) = 1 Then btn5.Enabled = False Else End If End Sub Public Sub btn4(tbox1 As TextBox, ByRef getval As Integer) getval = CInt(tbox1.Text) + 1 End Sub Public Sub btn5(tbox1 As TextBox, ByRef getval As Integer) getval = CInt(tbox1.Text) - 1 End Sub 中的if.. End If语句可能存在逻辑问题。

如果txtBoxShow

第一个.text="3"语句将单独留下并将button4保留为原始状态。

第二个If语句将单独留下If并停用textbox1

第三个button4语句会将If设置为“1”并停用textbox1.text

因为textbox1现在包含“1,所以第四个button5也会禁用If

因此,如果button5包含三个,那么您最终将textbox1button4停用,button5将包含“1”

这似乎不是你想要的行为。您的textbox1语句可能需要重写。