使用第二种形式将项目添加到C#中其他类的列表框中

本文关键字:添加 其他 列表 项目 二种 | 更新日期: 2023-09-27 18:27:48

我有一个表单MainWindow,它包含一个列表框,由另一个表单/类Task_details填充,但拒绝在MainWindow的列表框中添加任何内容。我试着把列表框放在Task_details中,它被正常填充。我的目标是在text_details类上使用我的方法来填充MainWindow分部类中的列表框。我还能做些什么来实现这一点?

    public partial class MainWindow : Window {
    private bool isTextChanged = false;
    Task_details details;
    public MainWindow() {
        InitializeComponent();
    }
    private void taskMenuItem_Click(object sender, RoutedEventArgs e) {
        details = new Task_details();
        details.Owner = this;
        details.Show();
    }

关于task_details,这是我的代码

  public partial class Task_details : Window {
    MainWindow mW;
    private bool isTextChanged = false;
    public Task_details() {
        mW = new MainWindow();
        InitializeComponent();
    }
    private void addTaskButton_Click(object sender, RoutedEventArgs e) {
        String tName = taskNameTextBox.Text;
        String tDesc = descriptionTextBox.Text;
        Task task = new Task(tName, tDesc);
        mW.taskListBox.Items.Add(task);
    } 

使用第二种形式将项目添加到C#中其他类的列表框中

您正在Task_details构造函数中创建一个新的MainWindow,而不是传入现有的MainWindow。mW不是指你认为它指的窗口,而是指你在第二个窗口中创建的隐藏窗口。

你可以通过这样做很容易地解决这个问题:

public Task_details(MainWindow mw) {
   this.mW = mW;
   InitializeComponent();
}

当您在主窗口中创建Task_details窗口时:

details = new Task_details(this);