【问题标题】:Create User Control from existing controls从现有控件创建用户控件
【发布时间】:2015-12-11 06:40:52
【问题描述】:
我有一个包含大量控件的 Windows 窗体的项目。正如我在Divide large windows form in pieces 中所读到的,我可以将其划分为几个用户控件。
如何从少数现有控件创建用户控件(当它们具有分配给其行为的代码时 - ButtonClick 等)?
是否有在 Visual Studio 中自动执行此操作的方法,或者我必须在设计器视图中手动复制控件,然后剪切并粘贴控件后面的代码?
谢谢!
【问题讨论】:
标签:
c#
.net
winforms
visual-studio
refactoring
【解决方案1】:
这不仅需要手动完成。
更大但更有益的部分是为这些 UC创建有用的接口方法和属性。
所有他们的控件都将成为私人成员,并且无法与其他 UC 中的控件一起使用。因此,您必须将所有这些依赖项分开,并在 UC 中创建定义明确的属性,以代替进入不同 UC 的控件之间的所有交互。
这将是一项艰巨的工作,但是,如果您坚持下去,那将是非常值得的。
不要仅仅为了让它们更容易而将它们公开和/或在所有 UC 之间创建引用。而是创建有意义的公共方法、属性和委托来表达应该发生的事情,而不是在所有东西都被拍到同一个表单之前编码的内容!
在 UC 之间隐藏得越多,设计就会越好。
示例:目前可能有一个CheckBox 允许用户在两种模式之间切换。
将该模式设为Property,它有一个好听的名称并由CheckBox 控制。不要公开CheckBox!大多数情况下,一个 UC 永远不应该知道任何其他 UC 的任何控件,而只知道少数几个属性。