以下行爲與.NET 4.0的代碼載列如下進一步發生:看似怪異的行爲WPF:文本框LostFocus事件和按鈕單擊事件
點擊文本框,所以它獲得焦點,然後單擊按鈕:
- 作爲代碼看臺,引發LostFocus處理程序被調用,而不是buttonclick處理
- 註釋掉MessageBox.Show(「handlelostfocus」),然後單擊處理程序被稱爲
- 在handlelostfocus和斷點設置斷點命中,但CLI ck處理程序不叫
這些錯誤或行爲的設計 - 如果以後,是否有任何進一步的解釋?
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="216,194,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="197,108,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
textBox1.LostFocus += new RoutedEventHandler(handlelostfocus);
}
private void handlelostfocus(object sender, RoutedEventArgs e)
{
MessageBox.Show("handlelostfocus");
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("click");
}
}
感謝,但是如果你完全拿走這些URL代碼,僅僅只剩下空空的處理程序,並在這兩個處理器的大括號設置斷點,並且運行在OP中,輸入了lostfocus處理程序,但不是點擊處理程序?如果斷點只在點擊處理程序上設置,則它被輸入。我想知道這是爲什麼? – sturdytree 2012-04-20 11:47:06
之所以這樣,是因爲調試器彈出並竊取了重點。 – Jon 2012-04-20 15:45:00