我的问题是:
用户可以搜索地址。如果找不到任何内容,则用户会看到一个消息框。他可以按回车键把它关上。到目前为止,还不错。调用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;
 }

因此,在第一个输入insider TxtBoxAddress时,lastSearchValue将成为新的搜索值。当他们在消息框上按回车键时,如果TxtBoxAddress文本没有更改,则不会触发if语句。
另外,这一行注释掉了,TxtBoxAddres.LoseFocus()可以自己工作。这将使文本框失去焦点,因此当用户在消息框上按enter时,文本框键down不应触发。

10-08 04:12