如何在自定义窗体中创建属性

时间:2014-10-21 18:14:14

标签: vb.net winforms controls

我们的想法是能够在设计时设置f1-f4键。就像accept和canel按钮是正常形式一样。

me.AcceptButton = Button1

我希望能够拥有与此属性相同的功能。如在接受按钮中,按Enter键并执行。我希望能够将F1-F4键分配给按钮。

me.F1Button = ButtonCalc
me.F2Button = ButtonClr
etc.

我已经看了很多创建自定义控件并构建了一些,但似乎没有找到关于如何类似的东西的文档。我正在寻找关于此的任何书籍,文章或指南。

2 个答案:

答案 0 :(得分:2)

您必须继承表单作为基类才能让设计器序列化属性,但这只是一个简单的例子:

Public Property F1Button As Button

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, _
                                           keyData As Keys) As Boolean
  If keyData = Keys.F1 AndAlso F1Button IsNot Nothing Then
    F1Button.PerformClick()
    Return True
  End If
  Return MyBase.ProcessCmdKey(msg, keyData)
End Function

答案 1 :(得分:0)

为表单和所有按钮设置KeyDown事件处理程序。您需要这样做,因为在按下键时表单可能没有焦点。

Private Sub Form1_Load(sender As Object, e As EventArgs)
    AddHandler CancelButton.KeyDown, AddressOf Form1_KeyDown
    AddHandler OKButton.KeyDown, AddressOf Form1_KeyDown
    AddHandler Me.KeyDown, AddressOf Form1_KeyDown
End Sub

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs)
    Select Case e.KeyCode
        Case Keys.F1
            ' custom action
        Case Keys.F2
            ' custom action
        Case Keys.F3
            ' custom action
        Case Keys.F4
            ' custom action
    End Select
End Sub