form1里面定义了一个datagridview 里面有n行数据
form1里面有个方法private void rowsnum(){messagebox.show(datagridview1.rows.count.tostring());}
from2 里面有一个按钮
按钮的点击事件里调用rosnum()但是显示的行数是0 而如果在form1里面调用这个方法显示的行数又是正确的
我的问题是怎么才能在form2里面读取到form1的行数
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
int flag=frm.Insert();
if (flag == 1)
{ this.Close(); }form1里德方法
public int Insert()
{
for (int k = 0; k < dataGridView1.Rows.Count; k++)
{ }
}注意 for (int k = 0; k < dataGridView1.Rows.Count; k++)
后面没有执行 因为调试得知dataGridView1.Rows.Count始终为0
form1里面有个方法private void rowsnum(){messagebox.show(datagridview1.rows.count.tostring());}
from2 里面有一个按钮
按钮的点击事件里调用rosnum()但是显示的行数是0 而如果在form1里面调用这个方法显示的行数又是正确的
我的问题是怎么才能在form2里面读取到form1的行数
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
int flag=frm.Insert();
if (flag == 1)
{ this.Close(); }form1里德方法
public int Insert()
{
for (int k = 0; k < dataGridView1.Rows.Count; k++)
{ }
}注意 for (int k = 0; k < dataGridView1.Rows.Count; k++)
后面没有执行 因为调试得知dataGridView1.Rows.Count始终为0
人家说的是对,你的要把前面已经操作过表格的form传入form2中,然后调用行数才对。应该对象不同了,对应的内存地址肯定不同了。
这样就解决了
在form2里
Form1 mainform;
public Form2(Form1 mainf)
{
InitializeComponent();
this.mainform = mainf;
}
form1里弹出form2时这样写:
Form2.show(this);
public class frm2:Form2
{
private Form1 frm;//加个变量用来接收Form1
public frm2(Form1 frm)
{
this.frm=frm;// 用变量frm接收Form1实例的引用 }
private void button1_Click(object sender, EventArgs e)
{
int flag=this.frm.Insert();
if (flag == 1)
{ this.Close(); }
}