0

Всем привет, начинаю писать приложения на WPF. Возникла, мне кажется детская проблема, но не могу исправить.

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

ChangelogText было null.

XAML код

<UserControl x:Class="AndroidRomTool.Views.Control.AboutControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:AndroidRomTool.Views"
         mc:Ignorable="d" 
         d:DesignHeight="548" d:DesignWidth="1010" >
<Grid Background="#EFEFF1">
                <RichTextBox x:Name="ChangelogText" HorizontalAlignment="Left" Height="280" Margin="25,95,0,0" VerticalAlignment="Top" Width="955">
        <FlowDocument>
            <Paragraph>
                <Run Text="Beta Version"/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

</Grid>

С# Код

using System;
using System.IO;
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace AndroidRomTool.Views.Control
{
       /// <summary>
      /// Логика взаимодействия для AboutControl.xaml
       /// </summary>
       public partial class AboutControl : UserControl
      {

    public AboutControl()
    {
        LoadChangelog();

        InitializeComponent();

    }
    public void LoadChangelog()
    {
        string fileName = "text.txt";

        TextRange range;

        FileStream fStream;

        if (File.Exists(fileName))

        {

            range = new TextRange(ChangelogText.Document.ContentStart, ChangelogText.Document.ContentEnd);

            fStream = new FileStream(fileName, FileMode.OpenOrCreate);

            range.Load(fStream, DataFormats.Text);

            fStream.Close();

        }
    }
}

}

Можете помочь.

Mr Ikso
  • 60
  • 1
    В какой строке выдаёт ошибку? Что такое ChangelogText.Document и откуда оно берётся? Вероятнее всего вы пытаетесь обратиться к ContentStart или ContentEnd - но у вас Document = null (и ошибка в коде который вы не привели) – A K Feb 28 '19 at 21:58
  • range = new TextRange(ChangelogText.Document.ContentStart, ChangelogText.Document.ContentEnd); на этой – Mr Ikso Feb 28 '19 at 22:00
  • из логики это всё), я уверен проблема в usercontrol – Mr Ikso Feb 28 '19 at 22:09
  • @MrIkso Ошибка действительно детская. Ответьте, из за чего происходят такие ошибки? – EvgeniyZ Feb 28 '19 at 22:14
  • То есть код вы добавлять не будете? Из текущего ничего не сказать о том, как исправить ошибку. – A K Feb 28 '19 at 22:15
  • ну есть ещё родительский код разметки интерфейса, без логики, @ EvgeniyZ ошибка возникает при попытке обратится в ричтекстбоксу – Mr Ikso Feb 28 '19 at 22:18
  • Я вообще имею ввиду, что эта ошибка означает, вы знаете? Мне интересно понять, знаете ли вы ее суть или нет. – EvgeniyZ Feb 28 '19 at 22:22
  • прочитал в сети пару статей, но сути так и не понял – Mr Ikso Feb 28 '19 at 22:28
  • 1
    Эта ошибка возникает тогда, когда вы обращаетесь к тому, что еще не инициализировано. То есть MyClass test = null; test.Prop = 1; выдаст ошибку, ибо test будет не инициализирован. Теперь перейдем к вашей проблеме, как думаете, когда в WPF приложении инициализируются все XAML объекты? Я дам вам подсказку, это всегда есть в конструкторе окна, запуск такого маааленького метода... – EvgeniyZ Feb 28 '19 at 22:31
  • решилось), не там вызов был прописан, InitializeComponent(); LoadChangelog(); , так заработало – Mr Ikso Feb 28 '19 at 22:37
  • 1
    Думайте всегда логически, не бегите сразу гуглить и спрашивать. Мой вам совет... – EvgeniyZ Feb 28 '19 at 22:38
  • спасибо за совет. Это я вечером уже не совсем хорошо думаю), забываю самое простое – Mr Ikso Feb 28 '19 at 22:42

0 Answers0