【问题标题】:Getting click events from buttons in a control array从控件数组中的按钮获取点击事件
【发布时间】:2012-05-11 09:38:15
【问题描述】:

使用 VB 2008 Express。

当按钮是表单上的静态按钮时,将代码附加到按钮上很容易;只需双击表单设计器上的按钮并将代码添加到事件中。

我有一系列在控件数组中生成的按钮,因此它们是在一个类中生成的,并且在运行时之前没有按钮。

所以新手问题的答案可能很简单...如何为在运行时实例化为类之前不存在的按钮的单击事件输入代码?

【问题讨论】:

    标签: vb.net


    【解决方案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
    

    【讨论】:

    • 单击时,我想将按钮切换为不同的背景和前景色,并更改 btn(i).text 属性。每个按钮上的相同操作(这是一个在“正常”和“选定”之间切换它们的网格)。我只是不清楚如何知道在单击 btn(i) 时将用于拦截的代码放在哪里,然后运行代码来更改或切换属性,因为它不在表单的设计选项卡中。
    • @shahkalpesh re: 编辑你的代码本质上是添加一个名为 button(i).click 的事件处理程序到一个名为 doSomething 的子例程,然后我会创建子例程来做我想做的事,这两个都是类定义的一部分,是吗? (确保我了解正在发生的事情......我想学习,而不仅仅是模仿代码以使其简单工作:-) 我认为我还可能需要在“addhandler”上搜索更多信息来自定义它。
    • 是的。 doSomething 与所有按钮的单击事件相关联。阅读 .net 中的事件/代表。你会在 net/stackoverflow 上找到很多很好的例子。
    • @shahkalpesh:感谢您提供的信息!有机会我会试试看。希望这能让我朝着正确的方向轻推,以找到适用于我的程序大杂烩的解决方案:-)
    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多