C#,WinForm在另一个winform中

时间:2017-05-25 09:34:22

标签: c# winforms

我需要帮助。我有winform,就像在图片上显示的一样,所以我想改进下一个东西,当我点击第一个按钮时,在右侧将显示来自另一个winform的内容,这可能吗?我不想使用面板。

enter image description here

8 个答案:

答案 0 :(得分:2)

为什么不动态地嵌入单个UserControl来表示当前的页面,或者如果您想在设计时执行所有操作 - 自定义{{1} }?

  

显示来自另一个winform的内容

您通常不会将弹出窗口嵌入到另一个窗口中,而不是控件。否则你必须处理隐藏最小化,最大化,关闭

答案 1 :(得分:0)

您可以使用TabControl控件 - >对于要显示的每个特定内容,您只需将TabPage添加到TabControl,当选择特定菜单选项时,只需切换到所需的TabControl页面。

myTabControl.SelectedIndex = 1; // for selecting and displaying page with index 1

要隐藏myTabControl的导航标题,请设置这些道具(在构造函数或Form_Load事件中:

myTabControl.ItemSize = new Size(0, 1); 
myTabControl.SizeMode = TabSizeMode.Fixed;

然后,您只显示TabControl页面的内容,没有导航标题。

答案 2 :(得分:0)

首先从设计时间运行时间制作this.IsMdiContainer = true;

然后在按钮的点击事件中放置以下代码。

        childForm frm = new childForm();
        frm.MdiParent = this;    //the current mdi parent form
        frm.FormBorderStyle = FormBorderStyle.None;
        frm.Dock = DockStyle.Fill;

        frm.Show();

output

答案 3 :(得分:0)

您可以使用mdi(多文档界面): 如果要在mainform中启动表单,请使用以下代码:

    Dim hotelForm As New HotelForm()
    HotelForm.MdiParent = Me // Me is your parent form want to open hotelForm inside
    HotelForm.Show()

答案 4 :(得分:0)

所有表单都有一个属性TopLevel,通过将此属性设置为false,然后您可以将该表单作为控件处理,并将其添加到面板控件。

见下面的伪代码:

Form2 newForm = new Form2();
newForm.TopLevel = false;

myPanel.Controls.Add(newForm);
newForm.Show();

之后,您的主要表单设计应该看起来像导航控件和停靠旁边的面板"填充"然后单击任何导航按钮,只需创建所需的表单并设置{{1} }到false,然后在面板上显示它

答案 5 :(得分:0)

您必须在表单中放置一个容器控件,例如面板“ pnlHost”,并使用它来显示您想要的任何表单

    private Form _currentForme;
    private void ShowForm(Form frm)
    {
        _currentForme?.Close();
        _currentForme = null;
        _currentForme = frm;
        _currentForme.TopLevel = false;
        _currentForme.TopMost = false;
        pnlHost.Controls.Clear();
        _currentForme.FormBorderStyle = FormBorderStyle.None;
        pnlHost.Controls.Add(_currentForme);
        _currentForme.Dock = DockStyle.Fill;
        _currentForme.Show();
    }

答案 6 :(得分:0)

MDI表单是最适合您的解决方案。

使用:this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;` 让您的孩子在您的项目中更漂亮!

如果您希望MDI父级自动调整子表单的大小,则可以这样编写代码。

代码示例:

 private void Form1_Load(object sender, EventArgs e)
    {
        IsMdiContainer = true;
    }

    private void btnHotel_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.Show();
        frm2.MdiParent = this;
    }

    private void btnCaffe_Click(object sender, EventArgs e)
    {
        Form3 frm3 = new Form3();
        frm3.Show();
        frm3.MdiParent = this;
    }

答案 7 :(得分:-1)

将当前表单设置为 MdiParent 然后使用 Datagridview 显示来自其他表单的数据