如何从另一个表单将数据传递给DataGridView?

时间:2015-11-05 17:26:17

标签: c# .net datagridview

我只想将数据从另一种形式传递给DataGridView?

我有两种窗体形式:

  • withcolumn包含form1DataGridView1button_frm1有3列且已有一些数据(6行)和DataGridView修饰符=公开。

  • DataGridView1包含form2textBox1

现在,当我点击button_frm2 form2时,当我单击button_frm1时,应该将textBox中的值插入到所选行的column0中的button_frm2中。但相反,我得到了这个错误:

  

指数超出范围。必须是非负数且小于集合的大小。

请帮我看看如何将form2中的textBox值插入到form1中的DataGridView1中。要采取什么措施? 非常感谢你提前。

这是我尝试过的代码:

Form1中:

DataGridView1

窗体2:

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

    private void button_frm1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.Show();
    }


}

1 个答案:

答案 0 :(得分:0)

首先创建一个包含事件数据的类:

public class ValueEventArgs : EventArgs
{
    private string _smth;
    public ValueEventArgs(string smth)
    {
        this._smth = smth;
    }  
    public string Someth_property
    {
        get { return _smth; }
    }     
}

然后在Form2上声明一个事件和事件处理程序:

public delegate void FieldUpdateHandler(object sender, ValueEventArgs e);
public event FieldUpdateHandler FieldUpdate;

并在事件的事件处理程序“单击”Form2的按钮:

private void button_frm2(object sender, EventArgs e)
{
    //Transfer data from Form2 to Form1
    string dataToTransfer=textBox1.Text;
    ValueEventArgs args = new ValueEventArgs(str);
    FieldUpdate(this, args);
    this.Close();
}

然后写一下你从form1调用form2的地方:

private void button_frm1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.FieldUpdate += new AddStuff.FieldUpdateHandler(af_FieldUpdate);
    frm2.Show();
}

void af_FieldUpdate(object sender, ValueEventArgs e)
{
   DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
   row.Cells[0].Value = e.Someth_property;
   row.Cells[1].Value = "YourValue";
   /*or
   this.dataGridView1.Rows.Add("1", "2", "three");
   this.dataGridView1.Rows.Insert(0, "one", "two", "three");
    */
   dataGridView1.Rows.Add(row);
}