这是什么错误:System.Runtime.InteropServices.COMException?

时间:2012-01-02 17:20:59

标签: c# wpf .net-4.0

我一直收到这个错误:

System.Runtime.InteropServices.COMException was thrown on "C:\Users\---\documents\visual studio 2010\Projects\TBrowser\TBrowser\TBrowserWindow.xaml": Error HRESULT E_FAIL has been returned from a call to a COM component.

但我的.xaml文件中没有COM组件。它不断弹出并说错误的位置是第1行第1列,我只有Window而没有别的:

<Window x:Class="TBrowser.TBrowserWindow"
        xmlns:my="clr-namespace:TBrowser"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="800" Width="900" Icon="/TBrowser;component/Images/Icons/Icon.ico" MinHeight="143" MinWidth="358" Background="White" Loaded="Window_Loaded" Name="TBWindow1">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/Generic.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

    <DockPanel x:Name="Layout">
        <StatusBar Height="24" Name="TBStatusBar1" Background="WhiteSmoke" BorderBrush="Black" BorderThickness="0,1,0,0" VerticalContentAlignment="Bottom" DockPanel.Dock="Bottom">
            <StatusBarItem Width="300" HorizontalAlignment="Left" Padding="1" />
            <StatusBarItem HorizontalAlignment="Right" Padding="0" Margin="1" VerticalContentAlignment="Stretch">
                <ProgressBar Width="146" Height="18" HorizontalAlignment="Left" Margin="1" Name="TBProgessBar1"></ProgressBar>
            </StatusBarItem>
        </StatusBar>

        <my:TBOutputPannel x:Name="TBOutputPannel1" DockPanel.Dock="Bottom" MinHeight="48" MaxHeight="200" Visibility="Collapsed" />

        <my:TBControlBar Height="48" VerticalAlignment="Top" x:Name="TBControlBar1" DockPanel.Dock="Top">
            <my:TBControlBar.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Menubar" IsCheckable="True" IsChecked="True" />
                    <MenuItem Header="Favsbar" IsCheckable="True" IsChecked="True" />
                    <MenuItem Header="Statusbar" IsCheckable="True" IsChecked="True" />
                </ContextMenu>
            </my:TBControlBar.ContextMenu>
        </my:TBControlBar>
        <Grid DockPanel.Dock="Bottom">
            <my:TBTabControl x:Name="TBTabControl1">
                <my:TBAddTabItem Height="28" HorizontalAlignment="Left" IsSelected="False" Margin="0" x:Name="TBAddTabItem" VerticalAlignment="Top" Width="28"></my:TBAddTabItem>
            </my:TBTabControl>
            <Menu Height="24" Name="TBMenu1" VerticalAlignment="Top" Margin="0,29,0,0" Background="WhiteSmoke">
                <MenuItem Header="File">
                    <MenuItem Header="New tab" InputGestureText="Ctrl+T" Click="MenuItem_Click">
                        <MenuItem.Icon>
                            <Image Source="/TBrowser;component/Images/Images/TBNewTabIcon1.png" />
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="Duplicate tab" InputGestureText="Ctrl+K" Click="MenuItem_Click_1" />
                    <MenuItem Header="New window" InputGestureText="Ctrl+N" />
                    <MenuItem Header="New session" />
                    <MenuItem Command="ApplicationCommands.Open" Header="Open" />
                    <MenuItem Header="Edit with Notepad" />
                    <MenuItem Command="ApplicationCommands.Save" Header="Save" IsEnabled="False" />
                    <MenuItem Command="ApplicationCommands.SaveAs" Header="Save As..." InputGestureText="Ctrl+S" />
                    <MenuItem Header="Close tab" InputGestureText="Ctrl+W" />
                    <Separator />
                    <MenuItem Header="Page setup" />
                    <MenuItem Command="ApplicationCommands.Print" Header="Print" InputGestureText="Ctrl+P" />
                    <MenuItem Command="ApplicationCommands.PrintPreview" Header="Print preview" />
                    <MenuItem />
                </MenuItem>
            </Menu>
            <ToolBar Height="24" Margin="0,52,0,0" Name="TBFavsbar1" VerticalAlignment="Top" Style="{StaticResource TBFavsbar}">
                <my:TBFavsItem isAdder="True" IconSource="/TBrowser;component/Images/Images/TBAddFavs1.png" Margin="2,1,0,0" />
                <Separator Margin="2,1,0,0" />
            </ToolBar>
        </Grid>
    </DockPanel>

    <Window.TaskbarItemInfo>
        <TaskbarItemInfo x:Name="Display" />
    </Window.TaskbarItemInfo>
</Window>

我甚至不断收到此错误:

System.NullReferenceException was unhandled by user code
  Message=Object reference not set to an instance of an object.
  Source=TBrowser
  StackTrace:
       at TBrowser.TBrowserWindow.TBMenubar1ShowButton_Checked(Object sender, RoutedEventArgs e) in C:\Users\---\documents\visual studio 2010\Projects\TBrowser\TBrowser\TBrowserWindow.xaml.cs:line 137
       at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
       at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
       at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
       at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
       at System.Windows.Controls.MenuItem.OnChecked(RoutedEventArgs e)
       at System.Windows.Controls.MenuItem.OnIsCheckedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
       at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
       at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
       at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
       at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
       at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
       at System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(Object instance, Object value)
       at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)
       at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)

这就是我正在使用的:

private void TBMenubar1ShowButton_Checked(object sender, RoutedEventArgs e)
{
    TBMenu1.Visibility = System.Windows.Visibility.Visible;
    TBrowser.Properties.Settings.Default.Menubar = System.Windows.Visibility.Visible;
}

我不知道怎么回事。

1 个答案:

答案 0 :(得分:2)

我认为它是通过向需要32位INT的应用程序发送64位INT来解决的(如果是这个问题),请遵循以下步骤:

右键单击项目(在解决方案资源管理器中) - &gt;属性,构建选项卡,平台目标集x86。然后做一个Clean-Build并给它一个旋转。

Platform Target