C# 从其他表单添加到listview

C# 从其他表单添加到listview,c#,winforms,listview,C#,Winforms,Listview,我想知道如何通过在表格2中的文本框输入数据来更新表格1中的listview。如果我把所有的文本框放在同一个表单上,我的代码就可以正常工作 我想我需要一些关于第二张第一张表格的参考资料,但无法让它工作 任何让我走上正确方向的建议都很好,还有任何更好的方法 这是我目前掌握的代码: 表格1: public partial class form1 : Form { public form1() { InitializeComponent()

我想知道如何通过在表格2中的文本框输入数据来更新表格1中的listview。如果我把所有的文本框放在同一个表单上,我的代码就可以正常工作

我想我需要一些关于第二张第一张表格的参考资料,但无法让它工作

任何让我走上正确方向的建议都很好,还有任何更好的方法

这是我目前掌握的代码:

表格1:

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

        public ListView MyListView
        {
            get
            {
                return taskList;
            }
        }
表格2:

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

        form1 f;

        public add(form1 f)
        {
            this.f = f;
        }        

        public void AddToList()
        {
                ListViewItem item1 = new ListViewItem(txtName.Text);
                item1.SubItems.Add(txtEmail.Text);
                item1.SubItems.Add(txtPhone.Text);
                f.MyListView.Items.AddRange(new ListViewItem[] { item1 });
        }

listview控件应该是私有的,而不是向包含listview控件的窗体添加一个公共方法,该控件接收要插入的数据并将其插入listview。

listview控件应该是私有的,而不是向包含listview控件的窗体添加一个公共方法,它接收您要插入的数据并将其插入listview。

如果form2不是由form1创建和显示的,您将无法调用引用。在这种情况下,从交流的角度来看,事情会变得更加有趣。发生这种情况时,您需要使用事件模型从一个地方到另一个地方获取信息。

如果form2不是由form1创建和显示的,那么您将无法调用引用。在这种情况下,从交流的角度来看,事情会变得更加有趣。发生这种情况时,您需要使用事件模型从一个地方到另一个地方获取信息。

最直接的方法是使用事件。您可以在
form2
上添加事件,该事件将在每次添加项目时触发,并包含要插入的文本(您有多条信息,因此自定义数据类型是合适的)。然后可以将处理程序方法添加到
form2
,从而将该项添加到其ListView中。然后在创建这两种形式的代码中将这两种形式结合在一起,生活应该是美好的

因此,要提供一些代码,首先是事件的数据结构:

public delegate void HandleItemAdded(object sender, ItemAddedEventArgs e);    

public struct ItemAddedEventArgs : EventArgs
{
    public string Name;
    public string Email;
    public string Phone;

    public ItemAddedEventArgs(string name, string email, string phone)
    {
        Name = name;
        Email = email;
        Phone = phone;
    }
}
然后我们在
form2

public event HandleItemAdded ItemAdded;
// .. some other stuff
public void RaiseItemAdded(ItemAddedEventArgs e)
{
    if(ItemAdded != null)
        ItemAdded(this,e);
}

// ... now for your AddToList
public void AddToList()
{

    RaiseItemAdded(new ItemAddedEventArgs(txtName.Text,txtEmail.Text, txtPhone.Text);
}
现在我们可以在
form1

public void HandleItemAdded(object sender, ItemAddedEventArgs e)
{
    ListViewItem item1 = new ListViewItem(txtName.Text);
    item1.SubItems.Add(txtEmail.Text);
    item1.SubItems.Add(txtPhone.Text);
    MyListView.Add(item1);
}
最后但并非最不重要的是,我们需要将它们联系在一起

//...not sure what your code looks like, but we'll assume we have instances of the two forms named form1Form and form2Form
form2Form.ItemAdded += form1Form.HandleItemAdded

做事情最直接的方法是使用事件。您可以在
form2
上添加事件,该事件将在每次添加项目时触发,并包含要插入的文本(您有多条信息,因此自定义数据类型是合适的)。然后可以将处理程序方法添加到
form2
,从而将该项添加到其ListView中。然后在创建这两种形式的代码中将这两种形式结合在一起,生活应该是美好的

因此,要提供一些代码,首先是事件的数据结构:

public delegate void HandleItemAdded(object sender, ItemAddedEventArgs e);    

public struct ItemAddedEventArgs : EventArgs
{
    public string Name;
    public string Email;
    public string Phone;

    public ItemAddedEventArgs(string name, string email, string phone)
    {
        Name = name;
        Email = email;
        Phone = phone;
    }
}
然后我们在
form2

public event HandleItemAdded ItemAdded;
// .. some other stuff
public void RaiseItemAdded(ItemAddedEventArgs e)
{
    if(ItemAdded != null)
        ItemAdded(this,e);
}

// ... now for your AddToList
public void AddToList()
{

    RaiseItemAdded(new ItemAddedEventArgs(txtName.Text,txtEmail.Text, txtPhone.Text);
}
现在我们可以在
form1

public void HandleItemAdded(object sender, ItemAddedEventArgs e)
{
    ListViewItem item1 = new ListViewItem(txtName.Text);
    item1.SubItems.Add(txtEmail.Text);
    item1.SubItems.Add(txtPhone.Text);
    MyListView.Add(item1);
}
最后但并非最不重要的是,我们需要将它们联系在一起

//...not sure what your code looks like, but we'll assume we have instances of the two forms named form1Form and form2Form
form2Form.ItemAdded += form1Form.HandleItemAdded

我花了几个小时阅读我的C#book上的事件,只是想弄清楚它是如何运作的。这正是我所需要的,谢谢。我花了几个小时阅读和翻阅我的C#book上的事件,只是想弄清楚它是如何运作的。这正是我需要的,谢谢。