我想制作一个继承 TextBox 的自定义 TextBox 类
并重写 onKeyDown 事件,以便在按下 Enter 键时启用 Tab 功能。
这个问题有重复项,但我发现没有一个答案有意义,所以我想开始一个新的讨论。
我不想从 UserControl 继承,而是从 TextBox 继承...这真的那么难吗?我似乎找不到关于如何执行此操作的简单教程或示例。
像这样的事情:
public partial class CustomTextBox : TextBox
{
public CustomTextBox()
{
this.KeyDown += customKeyDown;
}
void customKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{TAB}");
}
}
}
请记住,我对使用用户控件或自定义控件的经验很少,而且那是很久以前的事了,所以我忘记了关键的事情
你只需覆盖OnKeyDown
事件处理程序,不需要UserControl
here.
当在单行或多行文本框中按 ENTER 键时,下面的类将移动到下一个控件。当多行时,可以通过按 SHIFT+ENTER 插入 ENTER。
作为额外的好处,恼人的“叮”声被抑制(以最简单的方式,如果您不需要在控件之外处理按键,则效果很好)。
namespace YourNameSpace
{
public class CustomTextBox : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (e.KeyCode == Keys.Enter && (!Multiline || Multiline && !e.Shift))
{
SendKeys.Send("{TAB}");
// Removes "ding" sound by NOT passing the key down to container
e.SuppressKeyPress = true;
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)