该值将被传递并添加,但是当我转到该窗口时,它不会被添加到列表框中。该值将被添加到集合中,而不是列表框。 我发现如果尝试添加另一个值,它将覆盖原始值(计数始终等于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);
答案 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实例并传递数据。