从另一个表单修改列表



我试图在c#中建立一个列表,我想要它,当我按下一个添加按钮时,它会打开一个窗口,在那里我可以输入数据按和ok按钮,然后有这些文本框字段转移到列表中。这是我的代码的弹出式表单。

public partial class addtoLibraryDialog : Form
{
    public addtoLibraryDialog()
    {
        InitializeComponent();
    }

    private void btnOK_Click(object sender, EventArgs e)
    {
        ListViewItem list = new ListViewItem("name");
        list.SubItems.Add("path");
        listView1.Items.Add(list);
    }
}

我想知道我如何才能使它这样listview1被识别。我在这个大纲上找到了一些信息,但由于我是编程新手,所以我不能真正理解它们。

在调用ShowDialog方法之前,通过构造函数或赋值将主表单实例传递给辅助表单(addtoLibraryDialog)。

在设计器中更新listview1的"Modifiers"属性:将其设置为"internal"。然后您就可以访问主机了。listview1 in secondary (addtoLibraryDialog) form.

public partial class addtoLibraryDialog : Form
{
  internal MainForm mainfom ; // Change "MainForm" by real form name 
  public addtoLibraryDialog()
  {
    InitializeComponent();
  }

  private void btnOK_Click(object sender, EventArgs e)
  {
    ListViewItem list = new ListViewItem("name");
    list.SubItems.Add("path");
    mainfom.listView1.Items.Add(list);
  }
 }

addtoLibraryDialog dlg=new addtoLibraryDialog() ;
dlg.mainform = this ;
dlg.ShowDialog() ;

添加构造函数:

public partial class addtoLibraryDialog : Form
{
    ListView objLV;
    public addtoLibraryDialog()
    {
        InitializeComponent();
    }
    public addtoLibraryDialog(ref ListView lv)
    {
        objLV = lv;
        InitializeComponent();
    }

    private void btnOK_Click(object sender, EventArgs e)
    {
        ListViewItem list = new ListViewItem("name");
        list.SubItems.Add("path");
        objLV.Items.Add(list);
    }
}

从你的主表单调用它:

    ListView myList = new ListView();
    ...
    addtoLibraryDialog dlg=new addtoLibraryDialog(ref myList);
    dlg.ShowDialog();

我的首选方法是在我的程序中建立一个名为Global的新类文件,并将任何需要像这样的多形式访问的东西放入其中。所以你只需在全局文件中创建一个公共列表,并在项目的任何地方访问它

要做到这一点,最好的方法是发送ListView作为构造函数依赖在您的表单创建一个新的构造函数:

public partial addtoLibraryDialog : Form
{
  private readonly ListView _listViewItem;
  public addtoLibraryDialog(ListView listViewItem)
  { 
    InitializeComponent();
    this._listViewItem = listViewItem;
  }
  private void btnOK_Click(object sender, EventArgs e)
  {
    list = new ListViewItem("name");
    list.SubItems.Add("path");
    this._listViewItem.Items.Add(list);
  }
}
public class MyClass
{
  public void Main()
  {
    addtoLibraryDialog popupForm = new addtoLibraryDialog(this.ListViewItem1);
    addtoLibraryDialog.ShowDialog();
  }
}

最新更新