2016-08-19 74 views
0

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

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

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

+1

不幸的是,这是过于宽泛。答案肯定是“取决于”。你有什么想要实现的范例吗? –

+2

设计师是一种工具。只要它能帮助你完成工作,就根据需要使用它。但是,如果你在运行时创建控件和组件,*不要忘记处理它们时,他们不再需要*(如果你使用设计器,它会自动发生)。 – Luaan

+2

Designer是一个工具,它生成'根据你在设计执行的操作.net'代码。打开'YourForm.Designer.cs'文件,并比较Designer生成的代码和您计划在“运行时”使用的代码。然后,你可以自己决定是多么大的变化和方法将是最优选的为你 – Fabio

回答

1

通常,在使用设计器或在代码中定义控制变量之间没有区别,因为设计人员在将控件拖放到表单中后还提供了一些等效的C#代码。你可以看到在这个文件自动生成的代码与*了.Designer.cs前缀,您可以编辑和修改自动生成的代码

你可能更喜欢手动定义控制某些特定的情况下,代码。
例如:

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

谢谢!非UI控件的范围是需要记住的重要事项!我会编辑我的问题以反映这一点:) – Kaikus

1

使用设计师很好。在FolderBrowser示例中,您给出了我在不同项目中完成的两个示例。虽然Luaan对处置手动创建的控件有很好的意见。

1

确实是'依赖'。

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

我不喜欢表单中的每个控件都定义为类级别字段(如果我使用设计器,会发生什么),比如某些标签在初始化后永远不会改变事物。作为回报,如果您在运行时创建它们,则无法在UI设计器中看到该标签。

但是,有时当我正在开发一个新的,小的和短缺的应用程序时,我会毫不犹豫地从设计师那里获得好处。 (如果你拖动'n下拉控件,通过点击鼠标来调整它们的大小,速度真的很快)

我认为底线是你必须知道设计者分配控件和在运行时创建它们之间发生了什么由你自己。之后,这个问题将转变为一个简单的“我要购买哪台显示器”,根据您的要求,您可以使用任何您想要的工具/方法。