0

我在父表单中添加子表单,而不将子表单的 MDI 父级设置为父表单。以下是代码:

private void Form1_Load(object sender, EventArgs e)
{
    ChildForm openForm = new ChildForm();
    openForm.Show();
    openForm.Visible = true;
    openForm.TopLevel = false;
    this.Controls.Add(openForm);
}

单击子窗体中任何控件内的文本只会完全选择文本,并且不允许直接使用鼠标编辑文本。不过,使用键盘编辑文本工作正常。

在此处输入图像描述

由于选项卡控件的其他一些问题,我无法设置 ChildForm.MDI= this。有什么方法可以防止这种情况并允许用户使用鼠标编辑文本。

4

2 回答 2

0

这在 Metroframework 中对我有用

private void metroButton1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    frm.TopLevel = true;
    frm.Opacity = 10;
    frm.Show();
    frm.ControlBox = false;
    frm.Movable = false;
    frm.BorderStyle = MetroFormBorderStyle.None;
    frm.DisplayHeader = false;
    frm.TopLevel = false;
    panel1.Controls.Add(frm);
    frm.Dock = DockStyle.Fill;
    frm.BringToFront();
    this.TopMost = true;
    frm.StyleManager = metroStyleManager1;
}
于 2017-08-12T03:36:47.850 回答
0

考虑使用 aUserControl代替。它的设计方式与 a 相同,Form但它没有边框,旨在用于其他形式。

您只需编译一次包含它的项目,以便它出现在 Visual Studio 工具箱中(假设该项目在同一个解决方案中,并且与包含它的项目是同一个项目,Form或者具有对它的引用。

或者,您可以动态加载它,类似于您在示例中所做的。但是如果你系统地加载相同的单个用户控件,在设计器中更容易做到......

有时,您可能还想对布局进行一些调整。

于 2017-08-12T12:25:49.593 回答