允许用户将TAB插入TextBox而不是换行符

时间:2008-12-17 13:12:25

标签: c# .net textbox tabs

我希望有一个TextBox接受TAB键(并将TAB,ASCII 0x09,\ t相应地放入文本框中),而不是跳转到下一个控件。 TextBox有一个属性AcceptsTab,我已将其设置为true,但这不会产生所需的结果。事实证明,AcceptsTab属性仅适用,然后Multiline也设置为true。但是我想要一个不接受换行符的单行TextBox。

2 个答案:

答案 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.您将获得所需的结果。