4

我正在编写一个有很多文本框的 Windows 窗体应用程序。我想在文本框中添加标签或标题,这样我就不必将很多标签拖到表单上并处理定位等。到目前为止,我已经找到了两种可能的方法来做到这一点。

  1. 使用标签和文本框创建用户控件。如何使控件、标签和文本框根据输入的文本适当调整大小,因为该控件将是可重复使用的并且将输入不同的文本大小。如何让文本框的所有属性和事件保持不变。

  2. 扩展一个普通的文本框并添加一个称为标签或标题的字符串属性,并在文本框的左侧显示此属性。我知道这可以在带有 CSS 的 Web.UI 中完成,但它是否可以在 winform 中以及如何实现?

关于如何做这些的任何建议?谢谢。

4

2 回答 2

5

您可以创建一个包含标签和文本框的UserControl 。当您将用户控件添加到表单时,其中的标签和文本框将同时添加。您可以公开标签和文本框的属性以在设计或运行时分配值。

使用这种方法,您可以添加多个用户控件以标准化布局。至于根据文本调整控件的大小,您必须订阅事件并手动更改大小。

例如,您可以订阅TextChanged标签和文本框的事件。当事件触发时,您计算字符串的大小,然后相应地调整控件的宽度和位置。

于 2012-08-09T18:40:01.650 回答
0

如果您的文本框过多,我建议您切换到DataGridView。GridView 组件非常适合您所描述的内容,但它当然需要您接受网格布局。

使用 GridView 所涉及的好处之一是在您看到它实际运行之前很难理解:它一次只创建一个 HWINDOW(如果您处于编辑模式,则创建两个)。如果您在整个表单中创建标签和文本框,则每一个都会在操作系统中注册为 HWINDOW 对象。所有这些 HWINDOW 对象都需要时间来显示!在 .NET 1.0 中,WinForms 非常慢,以至于带有超过两打控件的对话框无法使用。尽管 .NET 2.0 在这方面要好得多,但是通过使用管理大量数据的单个控件(而不是每个管理一个数据的大量控件),您仍然可以获得明显更好的性能。

哦,如果您愿意,还有另一个选择:您也可以尝试使用PropertyGrid。它的优点是它还会显示帮助并允许您为每个元素创建复杂的编辑控件。

于 2012-08-09T18:46:44.700 回答