最佳实践:在设计时或运行时添加控件

时间:2016-08-19 12:58:46

标签: c# .net winforms

可能是一个愚蠢的问题,或者过于主观,或者“它取决于”,但是......在设计时或运行时添加一些控件是否有任何偏好或最佳实践?在可移植性方面,解耦模型与视图以及这些东西是否相关?

例如,我需要使用FolderBrowserDialog。应该更好地在设计模式下将其添加到表单中,还是仅在运行时声明它?

编辑:谢谢大家的回复。在这种特殊情况下:我为用户创建了一个用于选择文件夹的按钮。我的想法是使用FolderBrowserDialog。我应该将FoleBrowserDialog声明为'button clik'事件,还是在设计时将其嵌入到表单中?对我来说,在设计时创建它更容易,因为所有表单都可以轻松访问属性,但我认为在事件函数中声明它更正确,在字符串中收集路径,处理控件,返回值。为什么?使用FileBrowserDialog是“按钮单击”事件处理程序的“实现细节”,与表单的其余部分无关。解耦:)

3 个答案:

答案 0 :(得分:1)

使用设计师很好。在FolderBrowser示例中,您已经在不同的项目中完成了这两项工作。 Luaan对处理手动创建的控件有一个很好的观点。

答案 1 :(得分:1)

确实是'取决于'。

通常我讨厌使用任何形式的UI设计工具(只是我的观点,这是完全主观的)。

我不喜欢将表单中的每个控件定义为类级别字段(如果我使用设计器会发生这种情况),例如一些标签在初始化后永远不会改变。作为回报,如果您在运行时创建它们,则无法在UI设计器中看到Label。

但有时当我开发一个新的,小而且时间不足的应用程序时,我不会犹豫从设计师那里获益。 (如果你可以拖动'n放下控件,只需点击几下鼠标就可以调整它们的速度,这真的很快)

我认为最重要的是你必须知道设计师分配控件之间发生了什么,并在运行时自己创建它们。在那之后,这个问题将变成一个简单的'我将要购买哪个显示器',你可以根据你的要求使用你想要的任何工具/方法。

答案 2 :(得分:1)

一般来说,使用设计器或在代码中定义控制变量之间没有区别,因为设计者在拖动后也提供了一些等效的C#代码。将控件放入表单中。您可以使用 * .Designer.cs 前缀在文件中看到此自动生成的代码,您可以编辑和更改自动生成的代码

在某些特定情况下,您可能更愿意在代码中手动定义控件 例如:

  1. 有时控件的计数,排列和配置可以在运行时动态更改。例如,应用程序旁边有一个配置文件,此配置文件中的一些可更改参数确定GUI中某些控件的计数和属性。
  2. 您可能更喜欢将控件的定义范围限制为单个函数,而不是整个命名空间或整个表单类。