【发布时间】:2016-12-26 15:40:37
【问题描述】:
可能是一个愚蠢的问题,或者过于主观,或者“视情况而定”,但是......在设计时或运行时添加一些控件是否有任何偏好或最佳实践?就可移植性、从视图中解耦模型以及这些东西而言,它是否相关?
例如,我需要使用 FolderBrowserDialog。应该在设计模式下将其添加到表单中,还是在运行时声明它?
编辑:谢谢大家的回复。在这种特殊情况下:我为用户创建了一个按钮来选择一个文件夹。我的想法是使用 FolderBrowserDialog。我应该在“按钮单击”事件中声明 FoleBrowserDialog 还是在设计时将其嵌入表单中?对我来说,在设计时创建它更容易,因为所有表单都可以轻松访问属性,但我认为在事件函数中声明它更正确,在字符串中收集路径,处置控件,返回值。为什么?使用 FileBrowserDialog 是“按钮单击”事件处理程序的“实现细节”,与表单的其余部分无关。解耦:)
【问题讨论】:
-
不幸的是,这太宽泛了。答案肯定是“视情况而定”。你有一个更窄的例子来说明你想要实现的目标吗?
-
设计师是一个工具。只要它可以帮助您完成工作,就可以根据需要使用它。但是,如果您在运行时创建控件和组件,不要忘记在不再需要它们时将它们释放(如果您使用设计器,它会自动发生)。
-
Designer 是一个根据您在设计器中执行的操作生成
.net代码的工具。打开YourForm.Designer.cs文件并比较Designer 生成的代码和您计划在“运行时”中使用的代码。然后您可以自己决定有什么不同以及哪种方法最适合您 -
它的表单不是动态的,所以控件将保持在原处,并且在任何情况下都不会弹出控件,而不是当设计师可以为您执行此操作时,为什么还要进行如此多的编码?使用设计器并不是坏习惯。
-
您可以根据需要使用代码或使用设计器。使用设计师没有什么不好。它是帮助您更快地开发应用程序的真正好工具。但有时您可能需要使用代码动态生成 UI。看看这个帖子:Why should I insert a non-UI Windows.Forms component from the designer?