我只想将数据从另一种形式传递给DataGridView?
我有两种窗体形式:
withcolumn
包含form1
和DataGridView1
。 button_frm1
有3列且已有一些数据(6行)和DataGridView
修饰符=公开。
DataGridView1
包含form2
和textBox1
。
现在,当我点击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();
}
}
答案 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);
}