2014-09-05 113 views
0

我的问题是:在C#中fflush()从C中有类似的东西吗?

用户可以搜索地址。如果找不到任何东西,用户会看到一个消息框。他可以按ENTER键关闭它。到现在为止还挺好。调用SearchAddresses()也可以通过点击ENTER来启动。而现在用户处于无限循环,因为每个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#这个死循环?

+3

不知道这有下与fflush做什么呢? – AnthonyLambert 2014-09-05 12:46:36

+0

我认为你的问题不够清楚。请考虑重述并记住,我们不知道这个问题。此外,似乎代码的某些部分也丢失了。 – Krumia 2014-09-05 12:47:06

+4

为什么不将BtnSearch设置为默认按钮,以便在文本框Key Up事件中没有逻辑? – 2014-09-05 12:47:08

回答

2

大声笑。这是一个有趣的无限循环。 Theres很多答案。

尝试添加全局字符串_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成为新的搜索值。当他们在消息框上按Enter时,如果TxtBoxAddress文本没有改变,那么if语句将不会被触发。

另外,该行注释掉了,TxtBoxAddres.LoseFocus()可以独立工作。这应该将焦点从TextBox中移除,因此当用户按下消息框上的Enter时,TextBox KeyDown不应该触发。

0

使用KeyPress事件,而不是KeyUp

private void textBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == 13) // handle 'Enter' key 
     MessageBox.Show("test"); 
} 
+2

是的。只是想补充一点:问题在于msgbox在keydown上关闭,并且当焦点变回到文本框时键仍然按下,当释放键时,文本框会接收到键入事件。但使用默认按钮将是一个更清洁的解决方案。 – ths 2014-09-05 13:02:19

相关问题