可以使用數(shù)組列表(ArrayList)(數(shù)組)將同一類型的窗體存儲(chǔ)在同一個(gè)數(shù)組列表中,引用時(shí)for each next 循環(huán)迭代
在金鄉(xiāng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,金鄉(xiāng)網(wǎng)站建設(shè)費(fèi)用合理。
以一個(gè)項(xiàng)目為基礎(chǔ),在其工程上點(diǎn)右鍵,選添加,現(xiàn)有項(xiàng),然后選擇另外兩個(gè)項(xiàng)目里的文件,用這種方式把所有的都添加上就行了
在你要引入的文件或文件夾上點(diǎn)右鍵,選包括在項(xiàng)目中
下次直接追問,要不我看不到
Private Sub RowAdd() '這里以一個(gè)為例,多個(gè)自己添加就可以了
If DataGridView1.RowCount 0 Then '行數(shù)是否大于1
For Each dr As DataGridViewRow In DataGridView1.Rows
Dim ds As Object() = New Object(dr.Cells.Count - 1) {} '根據(jù)單元格個(gè)數(shù)創(chuàng)建數(shù)據(jù)
For i = 0 To dr.Cells.Count - 1
ds(i) = dr.Cells(i).Value '給數(shù)組賦值
Next
DataGridView7.Rows.Add(ds) '獲得的值新增行
Next
End If
End Sub
建立一個(gè)名為 modGeneral 的模塊并加入下面一行代碼:
Friend DataStuff As DataClass
這一行代碼為我的新類 DataClass 創(chuàng)建了一個(gè)友元變量,使你可以完全訪問程序集,對這個(gè)簡單例子來說,也就是指完整的應(yīng)用程序。然后我添加了下面的代碼到 Form1 的 Load 事件:
DataStuff = New DataClass
Me.txt1stData.DataBindings.Add("Text", DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text", DataStuff, "MoreData")
第一行建立一個(gè) DataClass 新實(shí)例。下面兩行代碼將數(shù)據(jù)綁定到 textbox 控件。對這個(gè)窗體而言,就這么些操作!
現(xiàn)在,你怎樣讓它們與 Form2 和其它窗體上的數(shù)據(jù)同步呢?將下面兩行加入到 Form 2 的窗體load 事件中去:
Me.txt1stData.DataBindings.Add("Text",DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text",DataStuff, "Moredata")
這個(gè)方法容易確保所有窗體上的幾乎任何類型的數(shù)據(jù)處于同步狀態(tài)。你可以簡單地將控件綁定到某個(gè)類的相同實(shí)例上,這就行了。
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)放到線程中運(yùn)行會(huì)好一些,其實(shí)主要事務(wù)是對窗體控件的操作時(shí)多線程意義不大,因?yàn)樵L問窗體的代碼依然要在窗體線程中運(yùn)行。
Private Sub test()
Dim d As voiddelegate = AddressOf updateui
For i = 0 To 9000
Me.Invoke(d, i)
Next
End Sub
'如果放在計(jì)時(shí)器中運(yùn)行效果好的多
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 打開窗體確實(shí)能行,不過窗體間相互操作不起作用,這個(gè)尚待研究中。
鼠標(biāo)左鍵 按住要移動(dòng)的窗口標(biāo)題 圖中藍(lán)色位置 移動(dòng)窗體到另一個(gè)窗體的右側(cè)邊緣