Как читать текстовый файл и отображать его в TextBlock в Visual Studio (C #)

Я новичок в Visual Studio (C #). Я хочу сохранить текст, прочитанный из текстового файла, и отобразить его в элементе управления TextBlock, но только для указанной строки. Как я могу это сделать? Я пробовал искать в Интернете, и большинство из них просто показывают способ чтения и записи.

У меня есть один TextBlock (названный «FlashText») и две кнопки (одна для кнопки «Назад», другая один для кнопки «Далее»). Я хочу, чтобы когда я нажимал кнопку «Далее», TextBlock показывал текст, прочитанный из txt файла в указанной строке (например, в первой строке). И когда я снова нажимаю «Далее», тогда TextBlock должен показать текст второй строки, прочитанный из файла.

Цель состоит в том, чтобы сделать простую флэш-карту. Код здесь:

`

private void btnRight_Click(object sender, RoutedEventArgs e) { 
  string filePath = @"D:\My Workspaces\Windows Phone 7 Solution\SimpleFlashCard\EnglishFlashCard.txt"; 
  int counter = 0;
  string line; 
  System.IO.StreamReader file = new System.IO.StreamReader(filePath); 
  while((line = file.ReadLine()) != null) { 
    Console.WriteLine(line); 
    counter++; 
  } 
} 

file.Close(); 
FlashText.Text = Console.ReadLine();

`

Пожалуйста, помогите. Большое спасибо.


ОБНОВЛЕНИЕ:

Недавно основной код:

public partial class MainPage : PhoneApplicationPage
{
    private FlashCard _flashCard;

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        // This could go under somewhere like a load new flash card button or
        // menu option etc.
        try
        {
            _flashCard = new FlashCard(@"D:\My Workspaces\Windows Phone 7 Solution\FCard\MyDocuments\EnglishFlashCard.txt");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void btnLeft_Click(object sender, RoutedEventArgs e)
    {
        DisplayPrevious();
    }

    private void btnRight_Click(object sender, RoutedEventArgs e)
    {
        DisplayNext();
    }

    private void DisplayNext()
    {
        try
        {
            FlashText.Text = _flashCard.GetNextLine();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    private void DisplayPrevious()
    {
        try
        {
            FlashText.Text = _flashCard.GetPreviousLine();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

И это для класса ' FlashCard ':

public class FlashCard
{
    private readonly string _file;
    private readonly List<string> _lines;

    private int _currentLine;

    public FlashCard(string file)
    {
        _file = file;
        _currentLine = -1;

        // Ensure the list is initialized
        _lines = new List<string>();

        try
        {
            LoadCard();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message); // This line got a message while running the solution
        }
    }

    private void LoadCard()
    {
        if (!File.Exists(_file))
        {
            // Throw a file not found exception
        }

        using (var reader = File.OpenText(_file))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                _lines.Add(line);
            }
        }
    }

    public string GetPreviousLine()
    {
        // Make sure we're not at the first line already
        if (_currentLine > 0)
        {
            _currentLine--;
        }

        return _lines[_currentLine]; //-- This line got an error
    }

    public string GetNextLine()
    {
        // Make sure we're not at the last line already
        if (_currentLine < _lines.Count - 1)
        {
            _currentLine++;
        }

        return _lines[_currentLine]; //-- This line got an error
    }
}

У меня появилось сообщение об ошибке при запуске решение: Попытка получить доступ к методу не удалась: System.IO.File.Exists (System.String) .

Я пробовал использовать точку останова, и пока он получает метод LoadCard (), он сразу бросается к исключению в конструкторе. Я перепроверил путь txt, но это правда.

А еще у меня появилось сообщение об ошибке при нажатии кнопки «Далее» / «Назад» в строке « return _lines [_currentLine]; » сказал: ArgumentOutOfRangeException не было обработано (Это произошло в методе GetPreviousLine () при нажатии кнопки «Предыдущий» и метода GetNextLine () для «Далее».

Если вам нужна дополнительная информация, я рад чтобы предоставить его. :)


ОБНОВЛЕНИЕ 2

Вот последний код:

public partial class MainPage : PhoneApplicationPage
{
    private string path = @"D:\My Workspaces\Windows Phone 7 Solution\FCard\EnglishFlashCard.txt";
    private List<string> _lines; //-- The error goes here
    private int _currentLineIndex;

    //private FlashCard _flashCard;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
        //_lines = System.IO.File.ReadLines(path).ToList();

        if (File.Exists(path))
        {
            using (StreamReader sr = new StreamReader(path))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                    _lines.Add(line);
            }
        }

        CurrentLineIndex = 0;
    }

    private void btnLeft_Click(object sender, RoutedEventArgs e)
    {
        this.CurrentLineIndex--;
    }

    private void btnRight_Click(object sender, RoutedEventArgs e)
    {
        this.CurrentLineIndex++;
    }

    private void UpdateContentLabel()
    {
        this.FlashText.Text = _lines[CurrentLineIndex];
    }

    private int CurrentLineIndex
    {
        get {  return _currentLineIndex; }
        set
        {
            if (value < 0 || value >= _lines.Count) return;
            _currentLineIndex = value;
            UpdateContentLabel();
        }
    }
}

У меня есть ошибка в строке, отмеченной выше: Поле 'FCard.MainPage._lines' никогда не назначается к, и всегда будет иметь значение по умолчанию null .

10
задан Jason Down 19 August 2011 в 04:16
поделиться