可能是一个愚蠢的问题,或者过于主观,或者“它取决于”,但是......在设计时或运行时添加一些控件是否有任何偏好或最佳实践?在可移植性方面,解耦模型与视图以及这些东西是否相关?
例如,我需要使用FolderBrowserDialog。应该更好地在设计模式下将其添加到表单中,还是仅在运行时声明它?
编辑:谢谢大家的回复。在这种特殊情况下:我为用户创建了一个用于选择文件夹的按钮。我的想法是使用FolderBrowserDialog。我应该将FoleBrowserDialog声明为'button clik'事件,还是在设计时将其嵌入到表单中?对我来说,在设计时创建它更容易,因为所有表单都可以轻松访问属性,但我认为在事件函数中声明它更正确,在字符串中收集路径,处理控件,返回值。为什么?使用FileBrowserDialog是“按钮单击”事件处理程序的“实现细节”,与表单的其余部分无关。解耦:)答案 0 :(得分:1)
使用设计师很好。在FolderBrowser示例中,您已经在不同的项目中完成了这两项工作。 Luaan对处理手动创建的控件有一个很好的观点。
答案 1 :(得分:1)
确实是'取决于'。
通常我讨厌使用任何形式的UI设计工具(只是我的观点,这是完全主观的)。
我不喜欢将表单中的每个控件定义为类级别字段(如果我使用设计器会发生这种情况),例如一些标签在初始化后永远不会改变。作为回报,如果您在运行时创建它们,则无法在UI设计器中看到Label。
但有时当我开发一个新的,小而且时间不足的应用程序时,我不会犹豫从设计师那里获益。 (如果你可以拖动'n放下控件,只需点击几下鼠标就可以调整它们的速度,这真的很快)
我认为最重要的是你必须知道设计师分配控件之间发生了什么,并在运行时自己创建它们。在那之后,这个问题将变成一个简单的'我将要购买哪个显示器',你可以根据你的要求使用你想要的任何工具/方法。
答案 2 :(得分:1)
一般来说,使用设计器或在代码中定义控制变量之间没有区别,因为设计者在拖动后也提供了一些等效的C#代码。将控件放入表单中。您可以使用 * .Designer.cs 前缀在文件中看到此自动生成的代码,您可以编辑和更改自动生成的代码
但在某些特定情况下,您可能更愿意在代码中手动定义控件
例如: