c# - C#中如何判断TextChanged是否被键盘触发?

标签 c# events textbox textchanged

我有一个方法

private void textBoxPilot_TextChanged(object sender, TextChangedEventArgs e)
{ ... }

有问题的文本框从用户那里获取搜索字符串,并在每次击键时用结果填充 ListBox

随后,当从 ListBox 中选取一个项目时,我希望该选择反射(reflect)在同一个 Textbox 中。但是,我不想触发搜索机制,这会导致 Listbox 忘记它的选择。

我如何确定 TextChanged 事件是由用户触发的(通过他们的键盘或可能是复制/粘贴)还是由使用 textBoxPilot.Text = "Pilot name"的其他方法触发; ?

谢谢。

最佳答案

有点乱,但是......

public class MyForm : Form
{
    private bool _ignoreTextChanged;

    private void listView1_SelectionChanged( object sender, EventArgs e )
    {
       _ingnoreTextChanged = true;
       textBoxPilot.Text = listView1.SelectedValue.ToString(); // or whatever
    }

    private void textBoxPilot_TextChanged( object sender, TextChangedEventArgs e )
    {
       if( _ignoreTextChanged )
       {
           _ignoreTextChanged = false;
           return;
       }

       // Do what you would normally do.
    }
}

关于c# - C#中如何判断TextChanged是否被键盘触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631026/

相关文章:

javascript - 清除文本框使其无法访问

c# - IE 错误信息 : "This website has been reported as unsafe"

c# - 在 C# 中创建内存对齐数组

c# - 反序列化后初始化私有(private)只读字段

vba - 在不同的工作簿中捕捉事件

c# - 从内部类引发事件以在外部类处理,怎么做?

c# - 在 WPF 中将焦点设置在文本框上

c# - WPF 和文本格式的文本框

c# - ASP.NET:如何在 GridView 中显示从数据库返回的不同值

c# - 控制应用程序流程的问题