0
的LostFocus事件这是我的XAML结构WPF文本框
<StackPanel>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="A"
LostFocus="text_LostFocus"/>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="B"
LostFocus="text_LostFocus"/>
</StackPanel>
=>这种结构可以循环以上。如:
<StackPanel>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="A"
LostFocus="text_LostFocus"/>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="B"
LostFocus="text_LostFocus"/>
</StackPanel>
<StackPanel>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="A"
LostFocus="text_LostFocus"/>
<m:TextBoxWithEllipsis IsEllipsisEnabled="True"
Name="B"
LostFocus="text_LostFocus"/>
</StackPanel>
在cs文件,我定义事件失去焦点如下
private void text_LostFocus(object sender, RoutedEventArgs e)
{
TextBox textbox = ((TextBox)sender);
if (textbox.Text.Trim().Length == 0)
{
System.Windows.Forms.DialogResult result1 = System.Windows.Forms.MessageBox.Show("Empty string!", "Warning",
System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
textbox.Dispatcher.BeginInvoke((Action)(() => { textbox.Focus(); }));
return;
}
textbox.ScrollToHome();
}
问题:如果有> = 2的文本框具有值是空的(” “)。
- 我点击第一个空文本框=>我不输入任何字符。
- 然后,我单击第二个空的文本框。
==>程序总是显示消息框=>如果我点击确定按钮,它会显示另一个。它永远发生。我无法关闭该程序。
问题:如果我有> = 2的空文本框,并且我的问题与上面的问题相同。如何更改功能text_LostFocus
来解决问题?
DEFAULT:这些文本框的
值始终是空的(DEFAULT)
必须使用的BeginInvoke =>因为我想,当用户点击texbox,用户必须输入至少一个角色。
滑稽实现XD当你有两个文本框,以为发生了什么事的: 否则我将创建一个“警告”标签靠近每个文本框1 。你输入第一个tb 2.你不输入任何东西,然后你点击第二个3. tb1的lostfocus事件触发,它打开一个对话框,再次关注tb1 4.因为tb1获得焦点,tb2的lostfocus事件触发它也是这样做的,将焦点返回到tb2并以无限循环继续。 –
另外 - 不需要'BeginInvoke'。您已经在UI线程中。 –
我以为这是WPF而不是WinForms,这个'System.Windows.Forms.DialogResult'可以很容易地用'System.Windows.MessageBox'代替! – XAMlMAX