我的问题是:
用户可以搜索地址。如果没有找到,用户会看到一个消息框。他可以按 ENTER 键关闭它。到目前为止,一切都很好。也可以通过按 ENTER 键开始调用 SearchAddresses()。现在用户处于无限循环中,因为每个 ENTER(让消息框消失)都会开始新的搜索。
这里是代码隐藏:
private void TxtBoxAddress_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
btnSearch_Click(sender, e);
}
private void queryTask_Failed(object sender, TaskFailedEventArgs e)
{
//throw new NotImplementedException();
MessageBox.Show("*", "*", MessageBoxButton.OK);
isMapNearZoomed = false;
}
这里是 xaml 代码:
<TextBox Background="Transparent" Name="TxtBoxAddress" Width="200" Text="" KeyUp="TxtBoxAddress_KeyUp"></TextBox>
<Button Content="Suchen" Name="btnSearch" Click="btnSearch_Click" Width="100"></Button>
我如何在 C# 中处理这个死循环?
最佳答案
哈哈。那是一个有趣的无限循环。有很多答案。
尝试添加一个全局字符串 _lastValueSearched。
private string _lastValueSearched;
private void TxtBoxAddress_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter && _lastValueSearched != TxtBoxAddress.Text)
{
//TxtBoxAddress.LoseFocus();
btnSearch_Click(sender, e);
_lastValueSearched = TxtBoxAddress.Text;
}
}
private void queryTask_Failed(object sender, TaskFailedEventArgs e)
{
//throw new NotImplementedException();
MessageBox.Show("*", "*", MessageBoxButton.OK);
isMapNearZoomed = false;
}
因此,在第一次输入内部 TxtBoxAddress 时,lastSearchValue 成为新的搜索值。当他们在消息框上按回车键时,如果 TxtBoxAddress 文本没有更改,则不会触发 if 语句。
或者,注释掉的行,TxtBoxAddres.LoseFocus() 可能会自行工作。这应该将焦点从 TextBox 上移开,因此当用户在消息框上按下 enter 时,不应触发 TextBox KeyDown。
关于c# - C# 中是否有类似于 C 中的 fflush() 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25686223/