Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一个Windows窗体面板中的一个Csharp面板中使用多个窗体?_C#_.net_Windows - Fatal编程技术网

C# 如何在一个Windows窗体面板中的一个Csharp面板中使用多个窗体?

C# 如何在一个Windows窗体面板中的一个Csharp面板中使用多个窗体?,c#,.net,windows,C#,.net,Windows,我正在构建一个儿童学习应用程序,点击面板上的按钮,我想在面板的同一位置显示不同的表单。你能帮我浏览一下教程链接吗?这个问题应该发布在Stackoverflow网站上,而不是这里 但是你可以用这种方法来处理这个案子 subForm = new SubFormYouWantToLoad(); subForm.TopLevel = false; subForm.FormBorderStyle = FormBorderStyle.N

我正在构建一个儿童学习应用程序,点击面板上的按钮,我想在面板的同一位置显示不同的表单。你能帮我浏览一下教程链接吗?

这个问题应该发布在Stackoverflow网站上,而不是这里

但是你可以用这种方法来处理这个案子

            subForm = new SubFormYouWantToLoad();
            subForm.TopLevel = false;
            subForm.FormBorderStyle = FormBorderStyle.None;
            ContainerPanel.Controls.Add(subForm , 0, 1);
            subForm .Visible = true;
您可以在单击特定按钮时添加此代码。 在这里,每个子窗体都作为控件添加到面板中。在添加另一个子窗体之前,应先从面板的控制列表中删除该子窗体。为此,最好拆下、关闭并处置第一个

        ContainerPanel.Controls.Remove(activeform);
        activeform.Close();
        activeform.Dispose();

您可以创建许多表单作为用户控件或从面板中获取的控件。然后有一个带有面板的父窗体来保存用户控件。然后,当需要更改面板时,可以更改容器中的活动用户控件

有一个关于msdn的教程,用于创建用户控件


使用用户控件并将其加载到面板中,而不是表单

如果要显示usercontrol1,请使用示例

panel1.Controls.Clear();
panel1.Visible = true;
UserControl1 usr1 = new UserControl1();
usr1.Show();
panel1.Controls.Add(usr1); 
如果用户控制2

panel1.Controls.Clear();
panel1.Visible = true;
UserControl1 usr2 = new UserControl2();
usr2.Show();
panel1.Controls.Add(usr2); 

我使用此代码关闭面板上的表单,但未成功

private void button12_Click(object sender, EventArgs e)
    {
        dontShowPANEL();
        //ActiveForm.Close();
        MainImaginCp kj = new MainImaginCp();
       //kj.Visible = false;
        kj.panel2.Controls.Clear();
        panel1.Visible = true;
        EngABCLearning usr1 = new EngABCLearning();
        usr1.Show();
        kj.panel2.Controls.Add(usr1); 
        //kj.Focus();
    }
我使用以下代码在面板中显示表单

private void toolStripMenuItem1_LR_ENG_Click(object sender, EventArgs e)
    {
        //kids.Form2 hj = new kids.Form2();
        //hj.Show();


        EngABCLearning gh = new EngABCLearning();
        //gh.Show();
        gh.TopLevel = false;
        gh.FormBorderStyle = FormBorderStyle.None;
        //Panel2.Controls.Add(subForm, 0, 1);
        panel2.Controls.Add(gh);
        gh.Visible = true;
    }

这将关闭我的主窗体并退出应用程序

试试看,我在一个面板中加载了两个表单

private void Form1_Load(object sender, EventArgs e)
    {
        Form2 f1 = new Form2();
        f1.TopLevel = false;
        f1.AutoScroll = true;
        panel1.Controls.Add(f1);
        f1.Dock = DockStyle.Left;
        f1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        f1.Show();
        //form2
        Form3 f2 = new Form3();
        f2.TopLevel = false;
        f2.AutoScroll = true;
        panel1.Controls.Add(f2);
        f2.Dock = DockStyle.Left;
        f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        f2.Show();



    }

试试这个,我用这个方法在一个面板上加载多个表单

private Form activeForm = null;

public void FormLoad(Form childForm)
    {
        if (activeForm != null)
        {
            activeForm.Close();
        }

        activeForm = childForm;
        childForm.TopLevel = false;
        childForm.FormBorderStyle = FormBorderStyle.None;
        panelName.Controls.Add(childForm);
        childForm.Visible = true;
    }
private void YourBtn1_Click(object sender, EventArgs e)
    {
        FormLoad(new youWantToLoadForm1Name());
    }
private void YourBtn2_Click(object sender, EventArgs e)
    {
        FormLoad(new youWantToLoadForm2Name());
    }

需要直接编码帮助的帖子应该在stackoverflow发布。此竖线用于软件开发方面的专业讨论。在另一个窗体的面板中显示窗体后,它不会关闭。。我使用ActiveForm.Close();然后关闭主应用程序。我能做些什么来解决这个问题呢?你想做什么来结束你在问题中写的代码?这是一种没有MDI的多种形式。谢谢:)你的答案不是一个好的解决方案,而且会误导人。您不应该向控件添加顶级控件。@Vimal Raj子窗体控件不显示在面板中,只有空白窗口显示