2010-12-21 43 views
1

你好,我有一個問題,每當我試圖寫TabControl_SelectionChanged事件中的任何簡單的事情,我得到這個消息SelectionChanged事件觸發異常,原因不明

「System.InvalidOperationException」類型的未處理的異常出現在WindowsBase .dll

附加信息:分派器處理已暫停,但消息仍在處理中。

例如:這是我的XAML:

<Window x:Class="try1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="auto" Width="auto" xmlns:my="clr-namespace:try1" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="171" d:DesignWidth="271" SizeToContent="WidthAndHeight"> 
<TabControl SelectionChanged="TabControl_SelectionChanged"> 
    <CheckBox Name="cbx"></CheckBox> 
    <TabItem Header="tabItem1" Name="tabItem1"> 
     <Grid /> 
    </TabItem> 
    <TabItem Header="tabItem2" Name="tabItem2"> 
     <Grid /> 
    </TabItem> 
</TabControl> 

,這是我的代碼背後:

private void something_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("hello"); 

    } 

在此先感謝您的幫助

+1

看吧:http://social.msdn.microsoft.com/forums/en-US/wpf/thread/44962927-006e-4629-9aa3-100357861442 – 2010-12-21 22:13:29

回答

2

那是因爲你SelectionChanged事件在加載tabcontrol(和window)之前被觸發。 如果你像這樣做,它的工作原理(抱歉VB.NET樣品,但你明白了吧):

Private Sub TabControl_SelectionChanged(ByVal sender As Object, ByVal e As RoutedEventArgs) 

    If Me.IsLoaded Then 
     MsgBox("hello") 
    End If 

End Sub 

是的,原因是在評論中提到的新聞組帖子解釋。

+0

翻譯: 私人無效something_Click(對象發件人,RoutedEventArgsē ) { if(this.IsLoaded) MessageBox.Show(「hello」); } – xr280xr 2011-10-03 15:04:40

相關問題