0

我正在尝试在 VB.Net 中创建一个自定义按钮控件,以便我可以向其中添加自己的文本字段并将其放置在我想要的位置。但是当我这样做时,按钮不再像按钮一样。我的 addHandlers 都不起作用,当我单击按钮时,什么也没有发生。但它确实正确显示了我的文字。它只是失去了作为按钮的所有功能。

Public Class myButton
  Inherits System.Windows.Forms.Button
  Public myText As New Label

  Public Sub New(TextString)
        myText.Text = TextString
        myText.BorderStyle = BorderStyle.FixedSingle
        myText.TextAlign = ContentAlignment.MiddleCenter
        Me.Controls.Add(myText)
  End Sub

End Class

我错过了什么?谢谢。

4

2 回答 2

1

在您的自定义控件中,您添加了一个现在位于按钮顶部的标签。所以你点击的是标签控件,而不是按钮。请尝试以下对我有用的片段

Public Class myButton
Inherits System.Windows.Forms.Button

Public myText As New Label

Public Event OnButtonClick As EventHandler

Public Sub New(TextString As String)
    myText.Text = TextString
    myText.BorderStyle = BorderStyle.FixedSingle
    myText.TextAlign = ContentAlignment.MiddleCenter
    AddHandler myText.Click, AddressOf OnLabelClick
    Me.Controls.Add(myText)
End Sub

Private Sub OnLabelClick(sender As Object, e As EventArgs)
    RaiseEvent OnButtonClick(Me, e)
End Sub
End Class

表单加载时

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim customButton As New myButton("vimal")
    AddHandler customButton.OnButtonClick, AddressOf OnCustomButtonClick
    Me.Controls.Add(customButton)
End Sub
Private Sub OnCustomButtonClick(sender As Object, e As EventArgs)
    MsgBox("Clicked")
End Sub
于 2013-08-22T20:19:00.947 回答
0

我相信您遇到的问题是标签显示在您的按钮上。标签有自己的点击事件动作处理程序,所以当您点击“按钮”时,您实际上是在点击标签。

于 2013-08-22T20:15:26.327 回答