在項目中右鍵點擊添加窗體。在代碼中需要顯示該窗體的地方寫入如下代碼:“form2.show()”form2是你窗體的name屬性……
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、龍州網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為龍州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
建立一個名為 modGeneral 的模塊并加入下面一行代碼:
Friend DataStuff As DataClass
這一行代碼為我的新類 DataClass 創(chuàng)建了一個友元變量,使你可以完全訪問程序集,對這個簡單例子來說,也就是指完整的應(yīng)用程序。然后我添加了下面的代碼到 Form1 的 Load 事件:
DataStuff = New DataClass
Me.txt1stData.DataBindings.Add("Text", DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text", DataStuff, "MoreData")
第一行建立一個 DataClass 新實例。下面兩行代碼將數(shù)據(jù)綁定到 textbox 控件。對這個窗體而言,就這么些操作!
現(xiàn)在,你怎樣讓它們與 Form2 和其它窗體上的數(shù)據(jù)同步呢?將下面兩行加入到 Form 2 的窗體load 事件中去:
Me.txt1stData.DataBindings.Add("Text",DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text",DataStuff, "Moredata")
這個方法容易確保所有窗體上的幾乎任何類型的數(shù)據(jù)處于同步狀態(tài)。你可以簡單地將控件綁定到某個類的相同實例上,這就行了。
你需要先弄一個文本框
把T1.TXT和T2.TXT的內(nèi)容讀進(jìn)去
用一個按鈕事件 讀取文件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
可以使用數(shù)組列表(ArrayList)(數(shù)組)將同一類型的窗體存儲在同一個數(shù)組列表中,引用時for each next 循環(huán)迭代
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
'把循環(huán)放到線程中運行會好一些,其實主要事務(wù)是對窗體控件的操作時多線程意義不大,因為訪問窗體的代碼依然要在窗體線程中運行。
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 打開窗體確實能行,不過窗體間相互操作不起作用,這個尚待研究中。