Initialize Component выдает исключение нулевой ссылки - PullRequest
6 голосов
/ 21 июня 2011

У меня есть пункт меню в большой программе, который открывает новое окно. В него ничего не передается, он загружает календарь, 3 пустых текстовых поля, 3 ярлыка, 2 кнопки и пустой Crystal Report Viewer.

При его запуске пользователь нажимает на календарь, и он автоматически вставляет первую и последнюю даты выбранного месяца в 2 текстовых поля. Одна кнопка загружает отчет CR с данными из БД, другая кнопка печатает отчет.

Это нормально работает в моей системе, но компонент Initialize выдает исключение нулевой ссылки при развертывании в системе коллег. Я не могу воссоздать исключение в моей системе.

У кого-нибудь есть идеи, с чего мне начать?

Обновлено

ERROR

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Windows.Baml2006.Baml2006Reader.Process_PropertyWithConverter()
   at System.Windows.Baml2006.Baml2006Reader.Process_OneBamlRecord()
   at System.Windows.Baml2006.Baml2006Reader.Process_BamlRecords()
   at System.Windows.Baml2006.Baml2006Reader.Read()
   at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at KeyInScreen.RebatesReports.InitializeComponent()
   at KeyInScreen.RebatesReports..ctor()
   at KeyInScreen.Menu.FertiliserRebate_Click(Object sender, RoutedEventArgs e)

Код XAML

<Window x:Class="KeyInScreen.RebatesReports"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Fertiliser Rebates" WindowState="Maximized" 
    xmlns:my="clr-namespace:SAPBusinessObjects.WPF.Viewer;assembly=SAPBusinessObjects.WPF.Viewer" 
    mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="700" 
    Width="1350">
<Window.Resources>
    <Style TargetType="{x:Type Label}">
        <Setter Property="FontSize" Value="14" />
    </Style>
    <Style TargetType="{x:Type Button}">
        <Setter Property="FontSize" Value="14"/>
    </Style>
    <Style TargetType="{x:Type Calendar}">
        <Setter Property="FontSize" Value="14"/>
    </Style>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="FontSize" Value="14"/>
    </Style>
</Window.Resources>

<Grid Background="#FFEFEDDF">
    <Grid.RowDefinitions>
        <RowDefinition Height=".5*"/>
        <RowDefinition Height=".5*"/>
        <RowDefinition Height="4*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="5*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width=".2*"/>
        <ColumnDefinition Width=".7*"/>
        <ColumnDefinition Width=".7*"/>
        <ColumnDefinition Width=".7*"/>
        <ColumnDefinition Width=".5*"/>
        <ColumnDefinition Width="4*"/>
        <ColumnDefinition Width=".1*"/>
    </Grid.ColumnDefinitions>
    <Calendar x:Name="cDatePicker" Grid.Column="1" Grid.Row="2" Grid.RowSpan="2" Grid.ColumnSpan="2" SelectedDatesChanged="cDatePicker_SelectedDatesChanged" />
    <Label Content="Start Date:" Grid.Column="1" Grid.Row="4" Margin="5"/>
    <TextBox x:Name="txtStartDate" Grid.Column="2" Grid.Row="4" Margin="5" VerticalContentAlignment="Center" />
    <Label Content="End Date:" Grid.Column="1" Grid.Row="5" Margin="5"/>
    <TextBox x:Name="txtEndDate" Grid.Column="2" Grid.Row="5" Margin="5" VerticalContentAlignment="Center"/>
    <Label Content="Supplier Number:" Grid.Column="1" Grid.Row="6" Margin="5"/>
    <TextBox x:Name="txtCustomerNumber" Grid.Column="2" Grid.Row="6" Margin="5" VerticalContentAlignment="Center" TabIndex="1" />
    <Button x:Name="btnShowRport" Content="View Report" Grid.Column="1" Grid.Row="8" Margin="0,0,10,0"  Click="btnShowRport_Click" IsDefault="True" />
    <Button x:Name="btnPrintReport" Content=" Print Report" Grid.Column="2" Grid.Row="8" Margin="10,0,0,0"  Click="btnPrintReport_Click" />
    <my:CrystalReportsViewer  x:Name="crReportViewer" Grid.Column="3" Grid.RowSpan="10" HorizontalAlignment="Center" VerticalAlignment="Center" 
                              Height="656" Width="845" Margin="94,-7,62,12" ToggleSidePanel="None" Panel.ZIndex="0" Grid.ColumnSpan="3" 
                              ShowPrintButton="False" ShowRefreshButton="False" ShowSearchTextButton="False" ShowToggleSidePanelButton="True"
                              ShowToolbar="True" ShowNextPageButton="True" ShowGoToPageButton="True" ShowExportButton="False" 
                              ShowCopyButton="False" SnapsToDevicePixels="True" ShowLogo="False" ShowPrevPageButton="True" 
                              ShowStatusbar="True" />
</Grid>

Спасибо

Ответы [ 3 ]

6 голосов
/ 02 декабря 2013

Немного поздно, но когда вы получаете исключение нулевой ссылки, подобное этому, оно может вводить в заблуждение. Внутреннее исключение может быть нулевым (было в моем случае.)

Способ, которым я обнаружил проблему, состоял в том, чтобы включить исключения первого шанса в VS 2010.

Перейти Debug -> Exceptions затем отметьте все поля.

3 голосов
/ 12 августа 2011

Вам нужно взглянуть на внутреннее исключение.Когда вызывается initialcomponent, он может запустить другой код, который должен вызывать исключение.Внутреннее исключение должно дать вам всю необходимую информацию.Обратите внимание, что возможно, что внутреннее исключение будет иметь само внутреннее исключение.Измените ваше приложение, чтобы записать все это в файл, буфер обмена или что-то в этом роде.

0 голосов
/ 17 декабря 2013

Проблема исчезла, когда я переименовал / удалил старые сборки в GAC (C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL => Расположение GAC для .NET Framework 4.0 или выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...