Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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#winForms在主窗体中打开窗体_C#_Winforms_Mdi - Fatal编程技术网

c#winForms在主窗体中打开窗体

c#winForms在主窗体中打开窗体,c#,winforms,mdi,C#,Winforms,Mdi,我已经编写了c#应用程序,我将发布截图。此主窗体中有3个按钮,可打开不同的窗体。现在,我决定修改这个应用程序,我想使一个主窗体与带菜单将打开这个表单。我使用了这个代码,但我不喜欢,或者我做错了什么。我不喜欢,因为父控件中有子控件(最小化、最大化、关闭)(请参见第二张图片): 请给我一些建议。MDI适合这样的工作吗?谢谢 Sell sell = new Sell(); sell.MdiParent = this; sell.Dock = DockStyle.Fill; sell.Show();`

我已经编写了c#应用程序,我将发布截图。此主窗体中有3个按钮,可打开不同的窗体。现在,我决定修改这个应用程序,我想使一个主窗体与带菜单将打开这个表单。我使用了这个代码,但我不喜欢,或者我做错了什么。我不喜欢,因为父控件中有子控件(最小化、最大化、关闭)(请参见第二张图片):

请给我一些建议。MDI适合这样的工作吗?谢谢

Sell sell = new Sell();
sell.MdiParent = this;
sell.Dock = DockStyle.Fill;
sell.Show();`

所以我的问题是,当我打开子窗体时,父窗体没有填充。这是如何使父窗体填充子窗体集的屏幕

FormBorderStyle = None

对于子窗体

将父窗体的MDI容器属性设置为true。这会有帮助。

看到您最近的编辑,我认为您的子表单的内容即使在最大化的情况下也无法填充屏幕的原因是因为您的内容/布局不灵活

在设计模式期间,无论您将控件放置在何处,它们都将在运行时结束,而不管窗口大小如何。如果窗口太小,无法容纳所有这些内容,则它们将被覆盖,或者您将看到滚动条。或者,如果窗口变得比需要的大,您将看到大量的空白空间

解决方法是设置控件的和属性,从而使它们展开和压缩以适合其包含窗体的布局。也可以将控件放置在或控件中,以帮助管理其布局


至于您最初提出的问题,我仍然无法判断您是否反对MDI应用程序的外观,或者您是否只是不理解如何正确地实现它。您提供的澄清评论实际上让我不太清楚您发布了一个代码片段,但没有解释它的含义。正如我在一篇评论中所写的,没有(非黑客的)方式来显示没有最小化、最大化和关闭按钮的表单(将
FormBorderStyle
属性设置为“无”这样做,但我认为这是一个愚蠢的解决方案,它只允许您对作业使用错误的控件。它的行为不会像表单一样,用户将无法像表单一样移动它,等等。那么为什么要使用表单呢?)

如果您真的希望在一个应用程序窗口的中心有一个不断变化的内容,那么您应该创建一系列。您可以使用必要的子控件布局每个用户控件,就像使用窗体一样(使用上面讨论的流体布局技术),将每个用户控件添加到主窗体,将每个控件的
Dock
属性设置为“Fill”(以便它们填充整个查看区域),然后编写代码,在主窗体的查看区域中交换当前可见的用户控件。使用
用户控件
而不是
面板
的优点是,您可以将所有代码合并到一个控件中,就像使用
表单
一样。您可以使用选项卡控件,但如果您不想显示有多个表单的任何指示(这就是您的目标),那么这也将是作业的错误控件


如果您真的想在主窗体内打开子窗体(如问题标题所示),那么您确实应该使用MDI。如果您不明白如何做到这一点,您需要进一步澄清您的问题。

我真的不明白您想在这里描述什么。您说过您不喜欢MDI,因为这样每个子窗体都会得到最小化、最大化和关闭按钮?无论是MDI子窗体还是单独的浮动窗口,在任何时候显示新窗体时,它都是这样工作的。您能更新您的问题,更好地解释您希望实现的最终设计吗?我原以为页面控件更适合您的需要,因为我了解它们。谢谢您的帮助。卖出=新卖出();sell.MdiParent=this;这会有什么帮助?这不是一个特别有用的答案。