【问题标题】:Is there a way to duplicate and access designer drawn controls in Winforms?有没有办法在 Winforms 中复制和访问设计器绘制的控件?
【发布时间】:2013-10-10 18:09:21
【问题描述】:

我想在设计器中创建一组控件,然后一遍又一遍地复制它。这是一张有助于形象化我所描述内容的图片:

目前我对每个控件的位置进行编程,以使其正确适合面板。这样做很乏味,每次我进行更改时都必须运行程序,以确保一切都按照我喜欢的方式排列。这是该面板的第四次迭代,我准备为不同的客户再做至少两个设计,这些客户希望以稍微不同的方式显示相同的数据。

有没有办法在设计器中绘制面板及其控件,以编程方式复制整个控件集,并将不同的数据绑定到每个控件?

【问题讨论】:

  • 为什么不使用设计器来布置控件?
  • 因为我不知道如何复制上面显示的面板。例如,如果我在设计器中绘制它,我知道 RSSI 标签的名称是 RSSILabel1。如果我复制或“克隆”它现在该控件的名称是什么?以及如何复制面板及其所有相关控件?对不起,如果这个问题太基础了,但我一直在做嵌入式编程,而 GUI 领域是全新的,我显然还没有学到足够的知识。
  • 您可以在UserControl 上设计所有这些一次,然后构建它,然后只需从工具箱中拖放即可再次使用该UserControl
  • King King,听起来很完美。我将不得不研究什么是“UserControl”,并以编程方式创建我需要的许多。谢谢!

标签: c# winforms


【解决方案1】:

如果您想允许客户移动这些控件,您需要:

  1. 创建持久性存储。基本上,您的控件需要从某种文件或更好的文件中构建自身 - 数据库,所有位置和其他属性都将在其中设置、保存等。

  2. 为客户开发“设计模式”。客户将单击“设计”按钮,并能够移动控件、重新调整它们的大小等。对您而言,在设计模式下,您希望使控件可药化,并且您还需要设计一种调整它们大小的方法。然后客户点击“保存”,控制数据应保存到持久存储中。

现在,如果您同意为客户重新实现多个外观并希望快速完成 - 创建一个UserControl,在其上放置TableLayoutPanel,然后使用一系列TableLayoutPanel's 为您的控件提供任何外观。这是相当快的方式。如果我只需要做 10 次,我只需创建一个控制工厂,并将每个新的实现添加到其中。让客户从现有的实施中挑选出来。因为创建设计师需要付出相当多的努力。

【讨论】:

  • 此时我只想按照用户想要的方式创建控件,而不是允许用户创建自己的显示版本。他们只是想“使用它”,但他们希望它与目前的方式不同(更大的频谱分析仪、更大的文本等等。)所以你的最后一段很可能是我这次要走的路。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多