【发布时间】:2012-04-22 14:58:17
【问题描述】:
在 C# 表单中,我需要代码来将第二个表单添加到我现有的表单中。这是我尝试过的:
第一种形式:
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
frmMain fM = new frmMain();
fM.KeyPress += new KeyPressEventHandler(MMForm);
}
private void MMForm(object sender, KeyPressEventArgs e)
{
Keys KP; KP = (Keys)sender;
if (KP == Keys.Escape) { frm2 fM2 = new frm2(); fM2.Show(); }
}
}
这是第二种形式:
public class frm2 : Form
{
public frm2()
{
frm2 fM2 = new frm2();
fM2.Height = 200; fM2.Width = 200;
Controls.AddRange(new System.Windows.Forms.Form[] { fM2 });
}
}
我错过了什么?
编辑:暂时忘记这一切。即使我按照那里的建议进行操作,当我按下键时也会出现错误。
An unhandled exception of type 'System.InvalidCastException' occurred in Project 09.exe
Additional information: Specified cast is not valid.
【问题讨论】:
-
你可以使用它来设置高度和宽度。如果要为当前实例设置它。由于在构造函数内部创建了这个新的 frm2 对象,我有点困惑。
-
你想在这里做什么,你想在主窗体上按 Escape 键启动 frm2 吗?
-
表单是一个顶层窗口,它不想成为子控件,除非你使用更大的锤子。 UserControl 是合适的替代品。