【问题标题】:winforms panels vs java swing panelswinforms 面板 vs java swing 面板
【发布时间】:2009-03-04 15:05:26
【问题描述】:

在 java swing 中,我可以将面板插入面板等等,而不必为我的应用程序的每个视图构建一个全新的窗口,或者在删除和添加控件时搞砸。

C# 中有一个面板类,但是我看不到任何创建“面板表单”的方法,或者基本上只是表单设计器中的一个表单,即面板及其内容。

那么我该如何做到这一点并像使用 java swing 一样工作?

【问题讨论】:

    标签: c# java winforms swing jpanel


    【解决方案1】:

    通常我只是将不同的表单停靠在彼此之间,在父窗口上将 IsMdiContainer 属性设置为 true。然后我使用以下函数创建我停靠的子表单:

    static class FormUtil
    {
        static public void showForm(Form sender, Control reciever)
        {
            sender.ControlBox = false;
            sender.FormBorderStyle = FormBorderStyle.None;
            sender.ShowInTaskbar = false;
            sender.TopLevel = false;
            sender.Visible = true;
            sender.Dock = DockStyle.Fill;
    
            reciever.Controls.Clear(); //clear panel first
            reciever.Controls.Add(sender);
        }
    
    }
    

    然后,每当我需要将表单停靠在父表单上的面板中时,我都会这样做:

    FormUtil.showForm(new SomeForm(), this.splitContainer1.Panel1);
    

    这允许我将一些表单创建委托给不同的设计师。对我来说就像一种魅力,很想听听是否有更好的方法。

    【讨论】:

      【解决方案2】:

      实际上,您可以使用面板控件并将其 Dock 属性设置为 Fill。这样,您的面板将成为表单的整个画布。然后,您可以根据需要通过代码或表单设计器添加子面板。

      【讨论】:

        【解决方案3】:

        用户控件的概念基本上为您提供了类似设计器表面的面板,更不用说您可以创建原子表单(可以重复使用)并将它们注册为可继承,这样您也可以提供继承。

        【讨论】:

          猜你喜欢
          • 2012-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-05
          • 1970-01-01
          • 2012-06-03
          • 2021-12-26
          • 1970-01-01
          相关资源
          最近更新 更多