首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

这样的窗体传值不执行吗?解决方法

2012-04-23 
这样的窗体传值不执行吗?form1:privatevoidbutton1_Click(objectsender,EventArgse){form2frnewform2()f

这样的窗体传值不执行吗?
form1:
private   void   button1_Click(object   sender,   EventArgs   e)
                {
                      form2   fr   =   new   form2();
                      fr.ShowDialog();
                }

form2:
  private   void   btCheck_Click(object   sender,   EventArgs   e)
                {                    
                    form1   frm   =   new   form1();
                    foreach   (DataGridViewRow   row   in   frm.dataGridView1.Rows)//不执行?
                        {                                                                          
                              MessageBox.Show( "重复...... ");
                              return;
                          }
                  }

为什么在form2里不执行form1.dataGridView1.Rows??


[解决办法]
当然不行!

你应把Form1变量引用传到Form2中,而不能在Form2中又New出一个新的窗体变量.

最简单的你可以这样的来做:

form1:
private void button1_Click(object sender, EventArgs e)
{
form2 fr = new form2();
fr.Form1 = this;
fr.ShowDialog();
}

form2:
private Form1 m_Form1;
public Form1 Form1
{
set
{
this.m_Form1 = value;
}
}
private void btCheck_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in this.m_Form1.dataGridView1.Rows)//不执行?
{
MessageBox.Show( "重复...... ");
return;
}
}
[解决办法]
form1:
private void button1_Click(object sender, EventArgs e)
{
form2 fr = new form2();
fr.showDialog(this);
}

form2:
private void btCheck_Click(object sender, EventArgs e)
{
form1 frm = (form1)Owner;
foreach (DataGridViewRow row in frm.dataGridView1.Rows)//不执行?
{
MessageBox.Show( "重复...... ");
return;
}
}
[解决办法]
form1 frm = new form1();
改为:
form1 frm = (form1)this.Owner;

热点排行