【问题标题】:Should a User Control's Controls be backed by Properties?用户控件的控件是否应该由属性支持?
【发布时间】:2011-01-13 14:11:51
【问题描述】:

希望我说的是对的。我有一个 WinForm(3.5) 应用程序,它有一个分为两个区域的表单。一个是导航,另一个是面板,是内容。您在导航部分中选择所需的内容,即 Demographics,然后在面板中嵌入一个包含所有 Demographics 控件的 UserControl。

我要问的是每个用户控件是否应该为每个Control 提供一个Property。示例:ucDemographics 有一个名为 txtCity 的文本框。是否应该有一个Property 来存储txtCityvalue 并允许我的表单和其他用户控件访问它?

这是普遍接受的“最佳实践”吗?

如果不是,那是什么?

【问题讨论】:

    标签: c# .net winforms user-controls properties


    【解决方案1】:

    不,这并不是最佳实践。用户控件的目的是用自己的行为组成一个新的控件。您最多应该有“几个”公共属性、方法和事件,并允许表单与新控件交互。如果您发现使用它的唯一好方法是公开其组成控件,那么您最好不要使用 UserControl,而是直接将控件放在表单上。

    【讨论】:

      【解决方案2】:

      这取决于你想用你的 UserControl 实现什么。

      通常您不会公开 txtCity,因为调用者可以操纵有关文本框的所有内容。在大多数情况下,您只会公开当前文本 á la

      public string CityText
      {
          get { return this.txtCity.Text; }
      }
      

      【讨论】:

      • 我明白了,所以通常你只会使用 Get,而不是 Set,还是不使用 Public Set?这样用户控件本身就可以使用它来设置变量。我错过了重点吗?
      • 取决于您的 UserControl 的用途。如果要允许宿主表单更新文本,则公开一个公共集,否则不要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多