首页 / C# / C# – 如何使两个表单相互引用
C# – 如何使两个表单相互引用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# – 如何使两个表单相互引用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2182字,纯文字阅读大概需要4分钟。
内容图文
我在MS Visual C#中编写了一个WindowsForms应用程序,我需要两种形式才能相互引用.在我测试时,我在Form1上创建了两个按钮 – 一个按钮显示Form2,另一个按钮隐藏它(代码在下面).
我想对Form2做同样的事情 – 创建隐藏或显示Form1的两个按钮.我使用了与Form1相同的方法,但是当我编译应用程序时,似乎陷入无限循环并且我收到了StackOverflow消息.
如何更改代码以便两个表单能够互相引用?
Form1代码:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Form2 frm2;
public Form1()
{
InitializeComponent();
frm2 = new Form2();
}
private void button1_Click(object sender, EventArgs e)
{
frm2.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
frm2.Visible = true;
}
}
}
Form2代码:
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
Form1 frm1;
public Form2()
{
InitializeComponent();
frm1 = new Form1();
}
private void button1_Click(object sender, EventArgs e)
{
frm1.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
frm1.Visible = true;
}
}
}
解决方法:
Forms2的代码应该是
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
Form1 frm1;
public Form2(Form1 parent)
{
InitializeComponent();
frm1 = parent;
}
private void button1_Click(object sender, EventArgs e)
{
frm1.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
frm1.Visible = true;
}
}
}
即使两者互相交谈,也必须首先创建一个并传递给第二个.
Form1需要进行调整
public Form1()
{
InitializeComponent();
frm2 = new Form2(this);
}
另一种方法是创建两个并在构造后传递它
namespace WindowsFormsApplication1
{
public class SomewhereElse
{
public void SomeFunction()
{
Form1 form1= new Form1();
Form2 form2= new Form2();
form1.frm2 = form2;
form2.frm1 = form1;
}
}
public partial class Form2 : Form
{
public Form1 frm1 {get; set;}
public Form2(Form1 parent)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frm1.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
frm1.Visible = true;
}
}
public partial class Form1 : Form
{
public Form2 frm2 {get; set;}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
frm2.Visible = false;
}
private void button2_Click(object sender, EventArgs e)
{
frm2.Visible = true;
}
}
}
内容总结
以上是互联网集市为您收集整理的C# – 如何使两个表单相互引用全部内容,希望文章能够帮你解决C# – 如何使两个表单相互引用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。