修改其他表单中的列表

时间:2015-08-04 13:59:11

标签: c# .net forms listview

我正在尝试在C#中设置一个列表,我想要它,这样当我按下一个添加按钮时,它将打开一个窗口,其中包含我可以输入数据按钮和确定按钮的字段,然后将这些文本框字段转移进入清单。这是弹出窗体的代码。

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得到了认可。我已经找到了关于这个大纲的信息,但由于我是编程新手,所以我不能真正做出它的尾巴。

4 个答案:

答案 0 :(得分:2)

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

只需在设计器中更新listview1的“Modifiers”属性:将其设置为“internal”。然后,您将能够以辅助(addtoLibraryDialog)形式访问mainform.listview1。

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);
  }
 }

在MainForm中:

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

答案 1 :(得分:2)

添加构造函数:

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();

答案 2 :(得分:1)

我首选的方法是在我的程序中设置一个名为Global的新类文件,并将需要多表单访问的任何内容放入其中。因此,您只需在全局文件中创建一个公共列表,并在项目的任何位置访问它

答案 3 :(得分:1)

最好的方法是在表单中将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();
  }
}