我希望有一个TextBox接受TAB键(并将TAB,ASCII 0x09,\ t相应地放入文本框中),而不是跳转到下一个控件。 TextBox有一个属性AcceptsTab,我已将其设置为true,但这不会产生所需的结果。事实证明,AcceptsTab属性仅适用,然后Multiline也设置为true。但是我想要一个不接受换行符的单行TextBox。
答案 0 :(得分:4)
这是你做的。创建自己的继承自TextBox的类。在构造函数中,将multiline设置为true,将AcceptsTab设置为true。然后,覆盖WndProc并使用以下代码:
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)0x102 && m.WParam.ToInt32() == 13)
{
return;
}
base.WndProc(ref m);
}
这将阻止接受输入键,因此不会创建新行。哈克?是的,但它会起作用..
编辑:我将解释这段代码的作用。当某些事情发生时,每个窗口窗体和控件都会收到一条窗口消息,比如绘画,按键等等......在这种情况下,我正在寻找一条WM_CHAR消息(这是0x102),这是告诉TextBox的消息钥匙被压了。如果这是消息,并且WParam == 13,则表示按下了Enter,在这种情况下,返回,什么都不做。否则,按预期恢复。有意义吗?答案 1 :(得分:0)
将多线条设为true并将线条大小设置为1.您将获得所需的结果。