如何以编程方式在netcf中发送TAB键击

时间:2010-05-13 18:36:12

标签: c# .net compact-framework

我需要让我的编辑框对tab和enter键都一样。

我在应用程序中发现了很多问题。是否有某种方法可以将表格键发送到表单/编辑框。

(请注意,这必须在Compact Framework中。)


解决方案:
以下是我最终使用的内容:

// This class allows us to send a tab key when the the enter key is pressed for the mooseworks mask control.   
public class MaskKeyControl : MaskedEdit
{
    [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
    internal static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

    public const Int32 VK_TAB = 0x09;

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.KeyData == Keys.Enter)
        {
            keybd_event(VK_TAB, VK_TAB, 0, 0);
            return;
        }
        base.OnKeyDown(e);
    }

    protected override void OnKeyPress(KeyPressEventArgs e)
    {
        if (e.KeyChar == '\r') 
            e.Handled = true;
        base.OnKeyPress(e);
    }
}

我正在回答汉斯,因为他的代码让我走向了正确的解决方案。

1 个答案:

答案 0 :(得分:2)

你可以尝试这个控制:

using System;
using System.Windows.Forms;

class MyTextBox : TextBox {
    protected override void OnKeyDown(KeyEventArgs e) {
        if (e.KeyData == Keys.Enter) {
            (this.Parent as ContainerControl).SelectNextControl(this, true, true, true, true);
            return;
        }
        base.OnKeyDown(e);
    }
    protected override void OnKeyPress(KeyPressEventArgs e) {
        if (e.KeyChar == '\r') e.Handled = true;
        base.OnKeyPress(e);
    }
}