如何使用“;textBox1_TextChanged";在“;textBox1_KeyDown”;作用

本文关键字:textBox1 KeyDown 作用 TextChanged 何使用 quot | 更新日期: 2023-09-27 17:58:54

我在textBox1上使用两个函数textBox1_TextChangedtextBox1_KeyDown,因为我想要的代码是在按下一些键后运行,并在文本更改时运行,工作正常,如下所示。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    TextChanged();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    KeysPressed(sender, e);
}

但是ٰ我只想使用以下概念在textBox1_KeyDown()下运行我的两个函数。

private string currentText = "";
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{    
    if (currentText != textBox1.Text)
    {
        TextChanged();
    }
    currentText = textBox1.Text;
    KeysPressed(sender, e);
}

我的问题是上层代码中的TextChanged();在添加两个字符后运行。我希望它能在textBox1中的每个字符和添加/删除/编辑/粘贴/替换时运行,所以有什么想法可以让它在第一次点击textBox1_KeyDown()函数时运行吗?

解释如下:

我理解我的问题,当我使用textBox1_KeyDown()事件时,它首先运行内部代码TextChanged();,然后为自己的工作工作,就像我按下一个字符一样,然后它将运行TextChanged();,然后在textBox1中键入该字符,这就是为什么我的TextChanged();无法检测到文本中的任何更改。那么如何解决这个问题。。。???

如何使用“;textBox1_TextChanged";在“;textBox1_KeyDown”;作用

根据您的问题,我假设您的问题在textBox1_KeyDown TextChanged();的第一次命中时没有被调用。只有在第二次命中时,它才会被成功调用。如果我的理解是正确的,那么我认为问题在于启动时的If语句textBox1文本和currentText都将相等,因为两者都是空字符串。