在项目中右键点击添加窗体。在代码中需要显示该窗体的地方写入如下代码:“form2.show()”form2是你窗体的name属性……
创新互联专注于企业网络营销推广、网站重做改版、龙州网站定制设计、自适应品牌网站建设、H5页面制作、商城网站建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为龙州等各大城市提供网站开发制作服务。
建立一个名为 modGeneral 的模块并加入下面一行代码:
Friend DataStuff As DataClass
这一行代码为我的新类 DataClass 创建了一个友元变量,使你可以完全访问程序集,对这个简单例子来说,也就是指完整的应用程序。然后我添加了下面的代码到 Form1 的 Load 事件:
DataStuff = New DataClass
Me.txt1stData.DataBindings.Add("Text", DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text", DataStuff, "MoreData")
第一行建立一个 DataClass 新实例。下面两行代码将数据绑定到 textbox 控件。对这个窗体而言,就这么些操作!
现在,你怎样让它们与 Form2 和其它窗体上的数据同步呢?将下面两行加入到 Form 2 的窗体load 事件中去:
Me.txt1stData.DataBindings.Add("Text",DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text",DataStuff, "Moredata")
这个方法容易确保所有窗体上的几乎任何类型的数据处于同步状态。你可以简单地将控件绑定到某个类的相同实例上,这就行了。
你需要先弄一个文本框
把T1.TXT和T2.TXT的内容读进去
用一个按钮事件 读取文件T1.TXT和T2.TXT
Dim OpenFileDialog As New OpenFileDialog
Dim f As System.IO.FileStream
Dim r As System.IO.StreamReader
OpenFileDialog.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
If (OpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
Dim FileName As String = OpenFileDialog.FileName
f = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
r = New System.IO.StreamReader(f)
TextBox1.Text += r.ReadToEnd
r.Close()
End If
另一个按钮保存 TextBox1.Text
Dim w As System.IO.StreamWriter
Dim f As System.IO.FileStream
Dim FileName As String
If (SaveFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
SaveFileDialog.FileName=T3.TXT
FileName = SaveFileDialog.FileName
f = New System.IO.FileStream(FileName, IO.FileMode.Create, IO.FileAccess.Write)
w = New System.IO.StreamWriter(f)
w.Write(textbox.Text)
w.Close()
End If
可以使用数组列表(ArrayList)(数组)将同一类型的窗体存储在同一个数组列表中,引用时for each next 循环迭代
Imports System.Threading
Public Class Form1
Dim t1, t2 As Thread
Dim tt1
Private Delegate Sub voiddelegate(ByVal i As Integer)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
t1 = New Thread(AddressOf test)
tt1 = 1
t1.Start()
tt1 = 2
t2 = New Thread(AddressOf test)
t2.Start()
' Timer1.Start()
End Sub
Private Sub updateui(ByVal i As Integer)
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
'把循环放到线程中运行会好一些,其实主要事务是对窗体控件的操作时多线程意义不大,因为访问窗体的代码依然要在窗体线程中运行。
Private Sub test()
Dim d As voiddelegate = AddressOf updateui
For i = 0 To 9000
Me.Invoke(d, i)
Next
End Sub
'如果放在计时器中运行效果好的多
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static i As Integer = 0
i += 1
If i 9000 Then Timer1.Stop() : i = 0
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
End Class
'如果在另一线程中用Application.run 打开窗体确实能行,不过窗体间相互操作不起作用,这个尚待研究中。