16,554
社区成员
发帖
与我相关
我的任务
分享
Public KeyCode As String
'为记事提供关键字
Private Sub LabelX1_Click(sender As Object, e As EventArgs) Handles LabelX1.Click,
ThingsCode.MainTr()
End Sub
Public Class form2
Private ss As String
'主函数
Public Sub MainTr(i As String)
Me.Show()
End Sub
'主代码
Private Sub CheckBox6_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, _
CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, CheckBox5.CheckedChanged, _
CheckBox6.CheckedChanged, CheckBox7.CheckedChanged, CheckBox8.CheckedChanged, CheckBox9.CheckedChanged, CheckBox10.CheckedChanged
Dim S As String = sender.text
Dim l As Integer = InStr(S, ":") + InStr(S, ":")
Dim T As String = S.Substring(0, l)
ss = ss & T
End Sub
'返还数据
Private Sub form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Form1.Controls("TextBox1").Text = ss
End Sub
End Class
Public Class Form2
Dim SS As String = "1576"
Public Property Result() As String
Get
Return SS
End Get
Set(value As String)
SS = value
End Set
End Property
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Result = "改变过了"
End Sub
End Class
其实我试了试,不用属性,用成员变量也可以,如下:
Public Class Form2
Public Result As String = "1576"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Result = "改变过了"
End Sub
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New Form2
AddHandler f.FormClosed, Sub()
Dim r = f.Result
MessageBox.Show("结果是" + r)
End Sub
f.Show()
End Sub
End Class
form2:
Public Class Form2
Public Property Result() As String
Get
Return "Adfafa"
End Get
Set(value As String)
'.......
End Set
End Property
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Result = "改变过了"
End Sub
End Class
我期望的结果是:打开form2,经过一系列的操作(就是点击了button1),传给result的数值会改变呀。如果不能改变,就只是传送form2的默认值,这一切也就没什么意义了,不是吗?Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New Form2
AddHandler f.FormClosed, Sub()
Me.TextBox1.Text = f.Result
End Sub
f.Show()
End Sub
End Class
这才是职责所在,而不是什么 form2 中去写这些代码。
先分清楚职责,是设计程序的一个非常重要的基础步骤。Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New Form2
AddHandler f.FormClosed, Sub()
Dim r = f.Result
MessageBox.Show("结果是" + r)
End Sub
f.Show()
End Sub
End Class
form2Public Class Form2
Public Property Result() As String
Get
Return "Adfafa"
End Get
Set(value As String)
'.......
End Set
End Property
End Class
这里,当点击form1上的按钮时,打开 form2窗口;然后当form2关闭时,form1获得form2输出的result值。这里的关键在于设计模式,form2绝不依赖于form1,这是符合设计模式要求的。