重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以使用数组列表(ArrayList)(数组)将同一类型的窗体存储在同一个数组列表中,引用时for each next 循环迭代
在金乡等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站建设 网站设计制作按需定制网站,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,成都外贸网站建设公司,金乡网站建设费用合理。
以一个项目为基础,在其工程上点右键,选添加,现有项,然后选择另外两个项目里的文件,用这种方式把所有的都添加上就行了
在你要引入的文件或文件夹上点右键,选包括在项目中
下次直接追问,要不我看不到
Private Sub RowAdd() '这里以一个为例,多个自己添加就可以了
If DataGridView1.RowCount 0 Then '行数是否大于1
For Each dr As DataGridViewRow In DataGridView1.Rows
Dim ds As Object() = New Object(dr.Cells.Count - 1) {} '根据单元格个数创建数据
For i = 0 To dr.Cells.Count - 1
ds(i) = dr.Cells(i).Value '给数组赋值
Next
DataGridView7.Rows.Add(ds) '获得的值新增行
Next
End If
End Sub
建立一个名为 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")
这个方法容易确保所有窗体上的几乎任何类型的数据处于同步状态。你可以简单地将控件绑定到某个类的相同实例上,这就行了。
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 打开窗体确实能行,不过窗体间相互操作不起作用,这个尚待研究中。
鼠标左键 按住要移动的窗口标题 图中蓝色位置 移动窗体到另一个窗体的右侧边缘