【发布时间】:2018-11-29 17:08:22
【问题描述】:
我正在尝试调用表单
public partial class MenuForm : Form
{
Ventanas v = new Ventanas();
EnfermoRep reporteEnfermo = new EnfermoRep();
public MenuForm()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void rptEnfermo_Click(object sender, EventArgs e)
{
v.CargarVentana(reporteEnfermo, this.panel1);
}
}
但是当我运行它时,当我实例化“EnfermoRep”时,会标记“抛出了“System.StackOverflowException”类型的异常。
这是另一个类
public partial class EnfermoRep : Form
{
Ventanas v = new Ventanas();
MenuForm menuForm = new MenuForm();
public EnfermoRep()
{
InitializeComponent();
}
private void EnfermoRep_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'bd.Enfermo' table. You can move, or remove it, as needed.
this.EnfermoTableAdapter.Fill(this.bd.Enfermo);
this.reportViewer1.RefreshReport();
}
private void btnVolver1_Click(object sender, EventArgs e)
{
v.CargarVentanas(menuForm, this.enfermoRep);
}
}
我也在使用这个,所以我可以只用一种形式在面板之间切换:
class Ventanas
{
public void CargarVentana(object sonform, Panel panel)
{
panel.Controls.Clear();
Form fh = sonform as Form;
fh.TopLevel = false;
fh.FormBorderStyle = FormBorderStyle.None;
fh.Dock = DockStyle.Fill;
panel.Controls.Add(fh);
panel.Tag = fh;
fh.Show();
}
}
在我制作的每一个表单中,我都会在容器中放置一个面板停靠栏,这样我就可以使用“Ventana”类来调用它
知道如何解决该错误。谢谢! :D
【问题讨论】:
-
你在
MenuForm中创建一个EnfermoRep,然后在EnfermoRep中创建一个MenuForm,这就是创建对象的无限循环。 -
如果名字是英文的,人们会更容易帮助你 - StackOverflow 是用英文提问的。 “CargarVentanas”翻译为“LoadWindows”。没有这种理解,人们就更难理解你在做什么,因此他们也更难帮助你。 “EnfermoRep”谷歌翻译为“Sick rep”;但我猜它可能应该是“关闭报告”?但我不应该这么辛苦来帮助你。或者换一种说法,我会选择花时间回答一个不需要翻译的问题。
-
下次我会做的,谢谢你的建议! c: 是的,“Enfemorep”是一个包含所有患病人数报告的表格
标签: c# visual-studio