【问题标题】:vb2010 Getting Button Name on MouseDown Eventvb2010 在 MouseDown 事件上获取按钮名称
【发布时间】:2016-08-25 16:17:21
【问题描述】:

如何捕获按钮的名称,以便可以在另一种形式中使用它来查询数据库。我是 vb 新手,仍处于早期学习阶段,因此我们将不胜感激。

frmMain

Private Sub btnA_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnA.MouseDown
        If (e.Button = Windows.Forms.MouseButtons.Right) Then
            frmRacks.Show()
        ElseIf (e.Button = Windows.Forms.MouseButtons.Left) Then
            MessageBox.Show("Left clicked")
        End If
    End Sub

frmRacks

这是我需要捕获名称以查询数据库的地方

【问题讨论】:

  • 您是说 Windows 窗体按钮?
  • 嗨 Edper 是的。我在 frmMain 上有一个名为 btnA 的按钮。我需要在 frmRacks 中捕获名称以查询数据库。谢谢
  • 如果按钮的名称不是“btnA”,那将是一个公平的奇迹。事件处理程序上只有一个 Handles 子句。

标签: vb.net visual-studio-2010


【解决方案1】:
Private Sub Button1_MouseDown(sender As Object, e As MouseEventArgs) Handles Button1.MouseDown
    Dim name As String = DirectCast(sender, Button).Name
End Sub

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点,一种是在frmRack中声明公共字段/变量,另一种是使用ShowDialog而不是Show:

    我先用第一个(公开):

    Public buttonName as String
    

    然后在从您的 frmMain 中单击按钮时,您传递的值如下:

    Private Sub btnA_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnA.MouseDown
        If (e.Button = Windows.Forms.MouseButtons.Right) Then
           frmRacks.buttonName = "btnA" ' Or you could use DirectCast as proposed by dbasnett
           frmRacks.Show()
        ElseIf (e.Button = Windows.Forms.MouseButtons.Left) Then
            MessageBox.Show("Left clicked")
        End If
    End Sub
    

    然后在加载您的 frmRacks 时,您现在可以选择分配按钮名称,例如:

    Private Sub frmRacks_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      Dim query as String =  "SELECT * FROM " + buttonName 'This is only an example you could make your own here
    End Sub
    

    【讨论】:

    • 感谢 Edper。还有一件事。如果我有一个需要使用此值的标签,它将是 lblRacks.Text = buttonName,它是 frmRacks 中的一个标签。因为当我这样做时,我得到的是 lblRacks 没有声明。谢谢
    【解决方案3】:

    应该是MouseButtons.Left 而不是Windows.Forms.MouseButtons.Left

    If e.Button = MouseButtons.Left Then
        MsgBox("Left Button Clicked") 'OR WHATEVER YOU WANT IT TO DO?!
    End If
    

    【讨论】:

    • 这如何帮助我获取名称。谢谢
    • 你到底想要什么??
    • 我在 frmMain 上有一个名为 btnA 的按钮。我需要在 frmRacks 中捕获名称以查询数据库。谢谢
    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多