Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# 如何根据WinC窗体中的不同选项设计设置的UI?_C#_.net_Winforms - Fatal编程技术网

C# 如何根据WinC窗体中的不同选项设计设置的UI?

C# 如何根据WinC窗体中的不同选项设计设置的UI?,c#,.net,winforms,C#,.net,Winforms,这是一个.NET winform应用程序问题 我时常会想到这个设计。一种简单的形式。在表单顶部有一个选项列表可供选择。根据选择的不同选项,表单主体将显示设置细节的唯一面板 如何在VisualStudio中设计这个UI?我有两个想法。第一个想法是有许多面板,每个面板包含设置控件。在运行时,根据选项的选择隐藏除该面板之外的所有面板。在这个解决方案中,很难在VS designer中组织表单的控件。您需要将窗体设置为大以容纳所有面板。面板彼此相邻放置。有许多运行时加载代码要编写。例如,加载表单时,需要隐

这是一个.NET winform应用程序问题

我时常会想到这个设计。一种简单的形式。在表单顶部有一个选项列表可供选择。根据选择的不同选项,表单主体将显示设置细节的唯一面板

如何在VisualStudio中设计这个UI?我有两个想法。第一个想法是有许多面板,每个面板包含设置控件。在运行时,根据选项的选择隐藏除该面板之外的所有面板。在这个解决方案中,很难在VS designer中组织表单的控件。您需要将窗体设置为大以容纳所有面板。面板彼此相邻放置。有许多运行时加载代码要编写。例如,加载表单时,需要隐藏面板,重置表单大小。选择选项时,需要重新定位面板并显示/隐藏它们。单调乏味

第二个想法是使用TabControl。TabControl很好,因为选项卡组织得很好。不需要重新定位面板和调整窗体大小。在运行时,只需根据选项选择正确的选项卡。首先,您需要向用户隐藏TabControl的部分内容,因为它毕竟不是真正的TabControl。隐藏TabControl的tab按钮并不难,但我发现在这之后,tab区域和表单上的以下部分之间总是有一个很大的间隙


有人有设计UI的好方法吗?也许不使用面板或选项卡控件,而是使用更智能的方式?如果大部分时间使用TabControl,如何隐藏和显示TabControl的选项卡部分,以及如何设置TabControl的边距和边框大小,以避免出现较大的间隙?非常感谢您的回答和建议。

我建议您为每个设置详细信息创建用户控件,当用户选择一个选项时,您加载相应的用户控件。您可能需要调整表单大小,但因此可以轻松管理IDE中的所有设置细节。

听起来您需要一些设计模式


为什么不创建一个UI工厂,根据需要返回UI对象?

当我需要这样做时,我将每组控件放在自己的UserControl中,然后我可以使用其他东西在它们之间切换。例如,请参见我的博客。

使用用户控件是解决问题的好方法。但您可能需要在面板中设置它们,并使用可见和停靠的属性

您不需要在填充设计模式下停靠它们。您可以在运行时或需要时设置此属性


希望能有所帮助。

在我回到这里之前,我看到了你的博客。我认为主要的想法是使用用户控制。实际上,使用用户控件的另一个好处是,我可以将UI代码拆分为每个用户控件。相反,如果我使用面板或选项卡控件,我必须将所有面板的UI代码放在一个表单中,这不是很整洁。谢谢你的主意。这个主意和罗杰的一样。因为他给了我一个例子,我选择他的作为答案。但也非常感谢你。