如何捕获控件的按钮单击

编程入门 行业动态 更新时间:2024-10-11 13:29:54
本文介绍了如何捕获控件的按钮单击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我制作了一个包含按钮数组的控件.单击后,所选按钮将显示为彩色. 我不知道如何知道在调用表单中按下了哪个按钮. 特此使用所使用的代码.

I made a control filled with a button array. On click the selected button is colored. I cannot figure out how to know which button was pressed in the calling form. Hereby the used code.

Public Class ButtonsTemplate Private _buttons() As Windows.Forms.Button Private _selectedButton As Integer Public Sub New() InitializeComponent() End Sub Public ReadOnly Property SelectedButton As Integer Get Return _selectedButton End Get End Property Public Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim btn As Button = CType(sender, Button) Dim name As String = btn.Name Dim index As Integer = CInt(name.Substring(6)) ColorButtons(index) _selectedButton = index End Sub Public Sub CreateNew(ByVal number As Integer) ReDim _buttons(number - 1) Me.Height = 100 Me.Width = 100 For i As Integer = 0 To number - 1 _buttons(i) = New Windows.Forms.Button _buttons(i).Width = Me.Width _buttons(i).Height = Me.Height * 1 / number _buttons(i).Name = "Button" + CStr(i) Me.Controls.Add(_buttons(i)) AddHandler _buttons(i).Click, AddressOf Buttons_Click Next For i As Integer = 1 To number - 1 _buttons(i).Top = _buttons(i - 1).Bottom Next ColorButtons() End Sub Private Overloads Sub ColorButtons() For i As Integer = 0 To UBound(_buttons) _buttons(i).BackColor = Color.White Next End Sub Private Overloads Sub ColorButtons(ByVal index As Integer) ColorButtons() _buttons(index).BackColor = Color.Red End Sub End Class Public Class Form1 Private obj As New ButtonsTemplate.ButtonsTemplate Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(obj) obj.CreateNew(4) AddHandler obj.Click, AddressOf Object_Click End Sub Private Sub Object_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) ''this event is never fired ''except when I change line "_buttons(i).Height = Me.Height * 1 / number" ''into "... * 0.5..." and when I click on the pane itself ''but that is not what I want... Dim buttonNumber As Integer buttonNumber = obj.SelectedButton MessageBox.Show("Selected button = " + CStr(buttonNumber)) End Sub End Class

推荐答案

由于您要将sender事件处理程序参数转换为按钮,并且由于该按钮将是启动事件的按钮,所以为什么不不是直接使用它,而不是带着子串和相关垃圾四处走动吗? Since you are converting the sender event handler parameter to a button, and since that button will be the button that initiated the event, why don''t you just use it directly instead of going round the houses with substring and related rubbish? Public Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim btn As Button = CType(sender, Button) btn.BackColor = Color.Red End Sub

更多推荐

如何捕获控件的按钮单击

本文发布于:2023-11-11 05:25:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1577502.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:控件   单击   按钮

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!