我有一个名为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。由于其保护级别可能无法访问”,即使在给予彼此引用之后也是如此。我在某处错了,或者你有另一种方式来引用这两个项目。 (注意:我不想在我的项目中添加多个安装扩展,以便它可以移植)
答案 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
包含三个,那么您最终将textbox1
和button4
停用,button5
将包含“1”
这似乎不是你想要的行为。您的textbox1
语句可能需要重写。