gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:25:58 24 4
gpt4 key购买 nike

我想要一个接受 TAB 键的文本框(并将 TAB、ASCII 0x09、\t 相应地放入文本框)而不是跳转到下一个控件。 TextBox 有一个 AcceptsTab 属性,我已将其设置为 true,但这并没有给出所需的结果。事实证明,AcceptsTab 属性只有在 Multiline 也设置为 true 时才有效。但是我想要一个不接受换行符的单行文本框。

最佳答案

这就是你要做的。创建您自己的继承自 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);
}

这将阻止接受回车键,因此不会创建新行。哈基?是的,但它会工作..

编辑:我将解释这段代码的作用。每个 Windows 窗体和控件在发生某些事情时都会收到一条 Windows 消息,例如绘制、按下等...在这种情况下,我正在寻找 WM_CHAR 消息(即 0x102),该消息告诉 TextBox 哪个键被按下。如果这是消息,并且 WParam == 13,则意味着按下了 Enter,在这种情况下,返回,什么也不做。否则,按预期恢复。有道理吗?

关于c# - 允许用户将 TAB 插入 TextBox 而不是换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/374493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com