我有一个方法
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/