0

システム定数にカスタム定数を追加する方法はあるのだろうか。

たとえば、私のコーディングでは、次のようなコードをよく使用します。

VB.NET
Private Sub myform_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.F3 Or (e.Control And e.KeyCode = Keys.F) Then
        search(mytextbox.Text.Trim)
    End If
End Sub

C#
private void myform_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.F3 | (e.Control & e.KeyCode == Keys.F)) {
    search(mytextbox.Text.Trim);
    }
}

アイデアは、列挙キーに新しい要素を追加することです。「検索」と言うので、これを行うことができます:

VB.NET    
If e.KeyCode = Keys.Find Then
    search(mytextbox.Text.Trim)
End If

C#
if (e.KeyCode == Keys.Find) {
    search(mytextbox.Text.Trim);
}

もちろん、最初にキーストローク Keys.F3 と e.Control+Keys.F を Keys.Find に置き換えます。これは、次のように Applicaton レベルの下位レベルの「ProcessCmdKey」にあります。

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean

    If keyData = Keys.F3 Then
        msg.WParam = CType(Keys.Find, IntPtr)
        keyData = Keys.Find
    End If

    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

それで、質問は次のとおりです: Keys.Find を Keys 定数に追加できますか?

4

1 に答える 1