【问题标题】:How do I use a StreamReader to input text from one WPF window to another in C#?如何使用 StreamReader 在 C# 中将文本从一个 WPF 窗口输入到另一个窗口?
【发布时间】:2017-05-02 12:17:35
【问题描述】:

我的问题是,我正在用 WPF C# 编写一些软件,我需要制作它,以便 MainWindow 解析我制作的 txt 文件 并将信息存储在数据中 结构,数据应传递给 第二个窗口打开时。 我的 StreamReader 代码工作正常,它可以找到 txt 文件,但它不会在第二个窗口的列表框中显示信息(如果我搞砸了格式,我很抱歉,对网站来说非常新)

namespace ACW2
{

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void inventoryButton_Click(object sender, RoutedEventArgs e)
    {
        InventoryWindow wnd = new InventoryWindow();
        wnd.ShowDialog();



        string line;                                                                     
        StreamReader file = new StreamReader(@"G:\P1\txt_files\inventory.txt");
        List<int> list = new List<int>();
        while ((line = file.ReadLine()) != null) ;
        {
            ListBox.Items.Add.(Line);
            list.Add(int.Parse(line));
        }
    }

【问题讨论】:

  • 如果您发布代码,请不要在图像中进行;使用代码标签。似乎您不想使用 MVVM 模式。我建议熟悉这一点。不过:您可以创建要显示的窗口的新实例并将数据设置为DataContext
  • 你的 while 语句旁边有一个流氓分号

标签: c# wpf data-structures parameter-passing streamreader


【解决方案1】:

你有几个问题:

  • while ((line = file.ReadLine()) != null) ; 行上的分号表示下一个代码块(大括号中)不会在循环中执行,而是在循环结束后执行。
  • 您要添加到ListBox.Items 集合中的Line(大写L)是什么? Line 是在哪里定义的,它的价值是什么?
  • 什么是line(这次是小写L)?

尝试修复这些错误,我们会看看接下来要做什么......

【讨论】:

  • 好的,这就是我所拥有的;我已经修正了分号,大写的 L 是一个错误,它应该是小写的。在初始代码中,我使用字符串行来定义流阅读器中的文本。所以我这样做的方式是 ListBox.Items.Add.(line);将 txt(字符串行)添加到第二个窗口的列表框中。
  • @BhristopherCenn 在您修复了这些错误之后,您仍然没有在您的ListBox 中看到行吗?
  • 不,我认为问题可能是主窗口上不存在列表框,并且代码试图将文本放入其中,而实际上我想将其发送到的列表框是在第二个窗口。但是我不知道点击按钮时如何将它发送到库存窗口。
【解决方案2】:

你想达到什么目的

ListBox.Items.Add.(Line);

也许你的意思是这样的:

ListBox.Items.Add.(line);

您也不需要在 while 语句末尾使用分号。

编辑: 在第二个窗口中使用 x:Name = "myListBox" 标签指定您的 ListBox。 完成此操作后,您应该能够使用 wnd.myListBox.Items.Add(line);

将元素添加到列表框

【讨论】:

  • 我在主窗口中创建了一个列表框(虽然这不是我想要的文本去的地方,这只是为了让它工作)。我收到两条错误消息,一条在添加“ListBox.Items.Add.(line); is an method that is not valid given the context”下,第二条在第一个括号和句号“预期标识符”之间。我不知道如何解决这个问题。
  • 好吧,有了第一篇文章的信息,我们几乎无能为力了。还添加第二个窗口/XAML 的代码。
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多