use*_*683 7 .net c# richtextbox winforms
我有richtextbox一个windows form用户可以输入文本,但它需要建立这样,如果用户按下一个关键,他们只拿到1个字符.
例如,如果他们hold down A那么它只会输入A而不是AAAAAAAAAAAAAAAAAAAAAAAAAAAAA等等.
从按键关闭到按键启动的那一刻起,我只想将其转换为1值.
我有什么想法可以达到这个目的吗?
我想我需要使用KeyDown,KeyUp但我不确定过去.
你说得对有关KeyDown和KeyUp事件.你可以这样做.
bool keyDown = false;
bool keyPress = false;
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = keyDown;
keyDown = true;
}
private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
keyDown = keyPress = false;
}
private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = keyPress;
keyPress = true;
}
Run Code Online (Sandbox Code Playgroud)
您可以子类化并TextBox重写方法。如果没有任何after ,只需通过设置为 来忽略它。检查代码:OnKeyDownOnKeyUpKeyUpsKeyDownKeyEventArgs.SuppresKeyPresstrue
public class MyTextBox:TextBox
{
bool down = false;
protected override void OnKeyDown(KeyEventArgs e)
{
if (!down)
base.OnKeyDown(e);
else
e.SuppressKeyPress = true;
down = true;
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
down = false;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用KeyUp这样KeyDown的事件处理程序,请注意,这一点SuppresKeyPress至关重要:
bool down = false;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (down)
e.SuppressKeyPress = true;
down = true;
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
down = false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |