vb.net 有没有变量可以代表窗体?
如果说Form1上的Button1的click event有这么一条:Form2.TextBox1.Text = "Done",如何把“Form2”换成是一个代表窗体的变量?有没有这个样的变量?Form2是一个已经建立的窗体。对于单个窗体直接用Form2就好了,但是如果是多个窗体而且每次修改的窗体并不是一个定数的话,就需要用到变量了。我本来想用Reflection把这些窗体找出来但是不成功,好像问题在Activator.CreateInstance上。多谢各位大大。参见我发的另一个帖子,里边有代码:
http://topic.csdn.net/u/20090531/17/1c2b55ef-363f-4fb6-8928-6741eebc6a53.html
问题类似但是这个问题可能更接近我想问的,希望没有违反版规。 --------------------编程问答-------------------- 1. 建立Form1。
2. 建立Form2。
3. 在Form1中,
Dim form2 As New Form2() --------------------编程问答-------------------- 这样可能有问题。因为我试验了一下要是用变量就都必须用这个变量,要不然是不行的。以下的代码不行。原因就是一个用了dlg1另一个用了Dialog1。这可能就是我在另一个帖子中遇到的问题。Activator.CreateInstance生成了一个新的实例就好像把一个窗体复制了一遍一样,并不是那个可以用窗体名称引用到的窗体。能不能用一个变量(可以是数组一个样的东西)把需要的窗体罗列进去?这样就可以对所有需要调用的窗体进行循环调用,然后初始化窗体上的控件。
Public Class Form1
Dim dlg1 As New Dialog1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dlg1.TextBox1.Text = "VB"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dialog1.ShowDialog()
End Sub
End Class
--------------------编程问答-------------------- UP!
帮顶了! --------------------编程问答-------------------- Public Class Form1
Dim dlg1 As New Dialog1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dlg1.TextBox1.Text = "VB"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dlg1.ShowDialog()
End Sub
End Class --------------------编程问答-------------------- 感谢诸位的回复。帖子刷新的也太快了。
我其实很清楚只能用dlg1或者Dialog1。刚才贴出来就是想说明在使用了Dim dlg1 As New Dialog1后其实打开的Dialog1并不是同一个窗体。dlg1打开的是一个Dialog1的副本。(起码我这么理解)如果在dlg1.TextBox1.Text = "VB"下边加入dlg1.show()大家会发现VB字样显示了(运行第二段Button2的代码会提示错误)。但是如果我刚才贴的那两段代码,Button2是不会让Dialog1显示VB字样的,可是能够调出Dialog1。
现在的问题是如何通过循环语句把窗体(不是他们的名字或者类型等等信息)本身加载到一个集合中,但是我只知道用collection.add一个一个的来,太笨了。 或者直接用循环语句遍历这些窗体。有没有好方法? --------------------编程问答-------------------- Form是动态类
建议你去看下动态类及其实例化方面的东西
这样你就不会问这种问题了 --------------------编程问答-------------------- 我现在基本上明白了,谢谢大家。
Dialog1其实是个类,如何用New实例化大家都知道。Dialog1.ShowDialog() 其实也是将Dialog1这个类进行了实例化。两种方法即使同时使用也只是生成了不同的实例而已。
补充:.NET技术 , VB.NET