C#如何在按下退格按钮时清除文本框

时间:2010-11-02 10:44:08

标签: c#

我正在使用C#并使用Winform程序,当用户点击文本框并按下退格按钮时我想清除文本框而不是一次删除一个字符。我怎么能这样做?

非常感谢 史蒂夫

4 个答案:

答案 0 :(得分:9)

您可以订阅KeyPress事件并清除发件人的文字:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 8)
    {
        ((TextBox)sender).Clear();
    }
}

答案 1 :(得分:2)

如果这是一个用户将输入文本的字段,请考虑一些用户(比如我)在打出拼写错误时有自然倾向于打Backspace。如果这样做可以清除我刚输入的所有内容,我会觉得很烦人。

作为替代方案,如果他们执行Shift-Backspace,您可以添加此行为。下面的代码将删除Shift-Backspace上插入符之前的所有内容,但如果用户选择了文本,则还会保留仅删除选择内容的预期行为:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    // if shift-backspace is pressed and nothing is selected, 
    // delete everything before the caret
    if (e.Shift && e.KeyCode == Keys.Back && textBox1.SelectionLength == 0)
    {
        textBox1.Text = textBox1.Text.Substring(textBox1.SelectionStart);
        e.Handled = true;
    }
}

答案 2 :(得分:2)

private void button1_Click(object sender, EventArgs e)
{
    int textlength = textBox1.Text.Length;
    if (textlength > 0)
    {
        textBox1.Text = textBox1.Text.Substring(0, textlength - 1);
    }
    textBox1.Focus();
    textBox1.SelectionStart = textBox1.Text.Length;
    textBox1.SelectionLength = 0;
}

答案 3 :(得分:1)

订阅KeyDown事件,当按下的键等于退格键时,您只需清除文本框。