【问题标题】:selectionChanged event firing exceptions for unknown reasonsselectionChanged 事件因未知原因触发异常
【发布时间】:2011-05-29 02:33:09
【问题描述】:

你好,我遇到了一个问题,每当我尝试在 TabControl_SelectionChanged 事件中编写任何简单的东西时,我都会收到此消息

WindowsBase.dll 中出现“System.InvalidOperationException”类型的未处理异常

附加信息:调度程序处理已暂停,但消息仍在处理中。

例如:这是我的 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");

    }

提前感谢您的帮助

【问题讨论】:

标签: wpf tabcontrol


【解决方案1】:

这是因为您的 SelectionChanged 事件在加载选项卡控件(和窗口)之前被触发。 如果你这样做,它会起作用(对于 VB.NET 示例很抱歉,但你明白了):

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

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

End Sub

是的,原因在评论中提到的新闻组帖子中进行了解释。

【讨论】:

  • 翻译:private void something_Click(object sender, RoutedEventArgs e) { if(this.IsLoaded) MessageBox.Show("hello"); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多