将自定义常量添加到系统常量[重复]

Posted

技术标签:

【中文标题】将自定义常量添加到系统常量[重复]【英文标题】:Adding custom constant to system constants [duplicate] 【发布时间】:2013-10-20 19:42:23 【问题描述】:

我想知道这里是否有任何方法可以将自定义常量添加到系统常量中。

例如在我的编码中我经常使用这样的代码:

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 常量中吗?如果可以 - 如何?

【问题讨论】:

那么这个好像真的不行了。 【参考方案1】:

不,因为您无法控制数据的来源 (e.KeyCode)。假设您可以向枚举添加一个新值,当它检测到控件和键的组合时,您如何告诉 Windows 开始向您发送这个特定的新值?

【讨论】:

我提到了这一点。我将覆盖 ProcessCmdKey 从按下的键到想要的键。 你知道ProcessCmdKeys能做什么吗? msdn.microsoft.com/en-us/library/… 当然,我使用它来更改/替换键: If keyData = Keys.Enter Then keyData = Keys.Down msg.WParam = CType(Keys.Down, IntPtr) End If When I按 Keys.Enter 我在我的表单中捕获了 Keys.Down 的 e.KeyCode!

以上是关于将自定义常量添加到系统常量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 魔术方法和魔术常量

labview中啥是严格类型VI,怎样创建严格类型VI

php -- 魔术方法魔术常量 简单介绍

PHP 常量

如何将自定义视图添加到 iOS VoiceOver 转子?

将自定义字体加载到网站中[重复]