将值从一个窗口传递到另一个窗口上的列表框-C#WPF

时间:2019-03-15 11:37:20

标签: c# wpf

该值将被传递并添加,但是当我转到该窗口时,它不会被添加到列表框中。该值将被添加到集合中,而不是列表框。 我发现如果尝试添加另一个值,它将覆盖原始值(计数始终等于1,该图像来自第三次通过字符串)。 当解释时,您可以轻松地解释它,因为我只是一个初学者。 我首先要弄清楚的是将它打印到列表框中。

窗口1

    ObservableCollection<string> Modules = new ObservableCollection<string>();

    public void PassedThroughWindow(string _module)
    {
        string moduleName = _module;

        //Data not being printed to the listbox
        Modules.Add(moduleName.ToString());
        lbxTimeTable.ItemsSource = StringModules;
    }

窗口2

        string ModuleName = TbxModuleName.Text;

        //Passing Data To Main Window
        MainWindow main = new MainWindow();
        main.PassedThroughWindow(ModuleName);  

从窗口一调试: Debug From Window One

3 个答案:

答案 0 :(得分:0)

这是因为您正在将字符串解析为表单的另一个实例。您需要将其解析为您已经打开的表单。在您的窗口2中进行此操作:

public MainWindow main= new MainWindow (); 

然后,当您从第一个表单中打开第二个表单时:

Form2 frm2 = new Form2();
frm2.yourFirstForm = this;
frm2.Show();

现在,以第二种形式执行此操作:

main.PassedThroughWindow(ModuleName);

答案 1 :(得分:0)

您正在将值传递给主窗口的新实例,而不是现有的

MainWindow main = new MainWindow();
main.PassedThroughWindow(ModuleName);  

这就是为什么它不显示在您现有的MainWindow中的原因

答案 2 :(得分:0)

ObservableCollection<string> Modules = new ObservableCollection<string>();

public MainWindow()
{ 
      //Assign item source only once and try adding items it should help
      lbxTimeTable.ItemsSource = Modules;
}  

public void PassedThroughWindow(string _module)
{
    string moduleName = _module;

    //Data not being printed to the listbox
    //Change stringModules to Modules which is defined above
    Modules.Add(moduleName.ToString());

}

还有一点,在哪里定义StringModules?仅定义一个mainwindow实例并传递数据。