0

一个标签,大小类似于没有文本但有边框且不可见的矩形(对于围绕控件但不包含控件的窗体上的可视矩形)或面板?

4

3 回答 3

3

您要使用的是 GroupBox。并不是说它真的很重要,很可能,但标签应该比面板便宜。

于 2009-09-24T23:48:19.190 回答
1

答案是; 哪个占用空间更小并不重要,如果确实存在设计问题(即,您的表单上有太多控件),则无关紧要。无论如何,您应该只使用适合该工作的控件,在本例中为 Panel 或 GroupBox。

于 2009-09-24T23:50:44.013 回答
0

如果这确实是个问题,那么在控件之间提供视觉分隔的最佳方法是处理每个标签页的 Paint 事件,并使用 e.Graphics.FillRectangle(...) 来绘制分隔符。你会以这种方式摆脱大量的控制。

如果你不能做一些简单的事情,比如在每个标签页上的每个控件下方绘制一个矩形,你可以编写一个代码生成例程,在表单上运行一次,然后为每个标签页生成类似这样的内容(通过遍历页面上的所有分隔符控件):

List<Rectangle> rects = new List<Rectangle>();
rects.Add(new Rectangle(10, 40, 200, 5)); // position of first separator
rects.Add(new Rectangle(10, 80, 200, 5)); // position of second separator
// etc.

然后将这些生成的代码例程复制并粘贴到您的应用程序中,并将它们用于每个页面的 Paint 事件,如下所示:

SolidBrush brush = new SolidBrush(Color.PeachPuff);
foreach (Rectangle rect in rects)
{
    e.Graphics.FillRectangle(brush, rect);
}

然后从选项卡控件中删除所有分隔符。您最终应该得到的是一个类型数组List<Rectangle>(每个页面一个列表),您实例化并填写表单的 Load 事件或其构造函数(使用生成的代码)。

不过,我必须重申 Ed 所说的话。.Net 表单可以有很多控件,而不会出现任何实际问题,因此,如果由于表单上的控件过多而遇到问题,最好重新设计整个控件。

于 2009-09-25T00:25:50.363 回答