VB.net自定义按钮控件无法正常工作

时间:2013-08-22 19:59:48

标签: vb.net button controls

我正在尝试在VB.Net中创建一个自定义按钮控件,以便我可以将自己的文本字段添加到它并将其放置在我想要的位置。但是,当我按下按钮时,按钮不再像按钮那样。我的addHandler都没有工作,当我点击按钮时,没有任何反应。但它确实显示了我的文字。它只是将所有功能作为按钮丢失。

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

我缺少什么?感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我相信您遇到的问题是标签会显示在您的按钮上。标签对于点击事件有自己的操作处理程序,因此当您单击“按钮”时,您实际上是单击标签。