2010-02-22 88 views
2

使用VB 2008 Express。从控制阵列中的按钮获取点击事件

单击按钮时将代码附加到按钮上很容易,因为它们是表单上的静态按钮;只需双击表单设计器上的按钮并向事件添加代码即可。

我有一系列在控件数组中生成的按钮,所以它们是在类中生成的,并且在表单中没有按钮,直到运行时。

因此,新手问题可能很简单的答案......我如何才能为按钮的点击事件输入代码,直到它们在运行时实例化为类时才会出现?

回答

1

我认为,你会这样做的常规按钮。

你想对每个按钮采取什么行动?如果每个按钮的操作都不相同,您能否举例说明它的样子?

编辑:原油代码领先

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     Dim button As Button() 
     ReDim button(2) 

     Dim button1 As New Button 
     button1.Top = 0 
     button1.Height = 100 
     button1.Text = "hello" 

     Dim button2 As New Button 
     button2.Top = 200 
     button2.Height = 100 
     button2.Text = "world" 

     button(0) = button1 
     button(1) = button2 

     For i As Integer = 0 To 1 
      '** This is where all the buttons are tied, to a common handler 
      AddHandler button(i).Click, AddressOf doSomething 
     Next 

     Me.Controls.AddRange(button) 
    End Sub 


    Protected Sub doSomething(ByVal sender As Object, ByVal e As EventArgs) 
     Dim thisButton As Button 
     thisButton = sender 

     thisButton.BackColor = Color.DarkBlue 
     thisButton.Text = "clicked" 
    End Sub 
+0

点击后,我想将按钮切换到不同的背景和前景颜色,改变的.text属性BTN(I)为好。每个按钮都有相同的操作(这是一个在“常规”和“选定”之间切换的网格)。我只是不清楚如何知道在单击btn(i)时如何将代码截取到代码中,然后运行代码以更改或切换属性,因为它不在表单的设计选项卡中。 – 2010-02-22 13:50:47

+0

@shahkalpesh re:编辑 - 你的代码基本上是添加一个名为button(i)的事件处理程序。点击一个名为doS​​omething的子程序,然后创建子程序来完成我想要的操作,而这两个都是类定义的一部分,是吗? (确保我明白发生了什么......我想学习,而不是鹦鹉代码,使其简单地工作:-)我想也可能需要谷歌更多的信息“定制”,以定制它。 – 2010-02-22 15:27:07

+0

是的。 'doSomething'与所有按钮的点击事件相关联。阅读有关.net中的事件/代表。你会在net/stackoverflow上找到很多很好的例子。 – shahkalpesh 2010-02-22 15:50:03