比较窗体调用的两种方法哪种好?(1.用事件 2.在窗体2中定义窗体1的成员)
------------------------------------------------------------------------
看了一些帖子,好象就是这两种方法了。(还有一种用静态成员的方法,不在讨论之列)
下面,分别贴出两个窗体的代码,大家认为,哪种方式更好些呢?方法1:用事件namespace atmp
{
public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
} void MainFormShow()
{
txt1.Text = frm2.strForm2;
}
private void button1_Click(object sender, EventArgs e)
{
frm2 = new Form2();
frm2.myrefresh+=new EventHandler(
(object sender1, EventArgs e1) =>
{ MainFormShow(); });
//frm2.ShowDialog();
frm2.Show();
}
}
}namespace atmp
{
public partial class Form2 : Form
{ public event EventHandler myrefresh;
public string strForm2; public Form2()
{
InitializeComponent();
} //刷新另一个窗体的文本框
private void button1_Click(object sender, EventArgs e)
{
this.strForm2 = "qqqqqqqqqqqqqqqqq";
myrefresh(null,null);
} private void Form2_Load(object sender, EventArgs e)
{ }
}
}
方法2:在窗体2中定义窗体1的成员namespace c1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.frm1 = this;
frm2.Show();
} public void setvalue(string str1)
{
this.textBox1.Text = str1;
}
}
}
namespace c1
{
public partial class Form2 : Form
{
public Form1 frm1;
public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
this.frm1.setvalue("adsfasdfasdf");
}
}
}
------------------------------------------------------------------------
看了一些帖子,好象就是这两种方法了。(还有一种用静态成员的方法,不在讨论之列)
下面,分别贴出两个窗体的代码,大家认为,哪种方式更好些呢?方法1:用事件namespace atmp
{
public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
} void MainFormShow()
{
txt1.Text = frm2.strForm2;
}
private void button1_Click(object sender, EventArgs e)
{
frm2 = new Form2();
frm2.myrefresh+=new EventHandler(
(object sender1, EventArgs e1) =>
{ MainFormShow(); });
//frm2.ShowDialog();
frm2.Show();
}
}
}namespace atmp
{
public partial class Form2 : Form
{ public event EventHandler myrefresh;
public string strForm2; public Form2()
{
InitializeComponent();
} //刷新另一个窗体的文本框
private void button1_Click(object sender, EventArgs e)
{
this.strForm2 = "qqqqqqqqqqqqqqqqq";
myrefresh(null,null);
} private void Form2_Load(object sender, EventArgs e)
{ }
}
}
方法2:在窗体2中定义窗体1的成员namespace c1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.frm1 = this;
frm2.Show();
} public void setvalue(string str1)
{
this.textBox1.Text = str1;
}
}
}
namespace c1
{
public partial class Form2 : Form
{
public Form1 frm1;
public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
this.frm1.setvalue("adsfasdfasdf");
}
}
}
解决方案 »
- C# 如何在菜单栏下面添加图标
- 关于制作安装包的问题
- (在线等)如何将DataList里的隐藏域的值赋给DataList外的隐藏域?
- XmlSerializer 的Serialize()方法只能将对象写进文件,能不能不写文件直接写进流对象里,然后变成数组
- 远程监视桌面~清空所有求源码
- 用文本框绑定了dataset后,更新数据库时发现的一个让我不解的问题,请教
- 微软的笔试!
- 关于ASP.NET字符集设置的问题
- 过年了散分、来者有者!!!
- 求教:这段数据绑定代码到底有什么问题???搞了我两天了,头大啊!!!
- 还是c#引用c++的问题,关于传递结构的,实在是太纠结了,高手帮忙
- datatable select() error求教
form1 a =new form1(要传的值)
如果调用的时候直接类名.要调用的窗体名称。
这样省的频繁的实例化了。
如果你就是整天纠结着两个Form,那么当然看不到稍微高层一点的目的。对于设计者和管理者,很简单,Form2并不像当然地依赖于Form1,而是有事通知所有客户。