哪个是C#中较小的占用空间

时间:2009-09-24 23:42:09

标签: memory size label panel footprint

标签尺寸类似于矩形,没有文字但有边框且不可见(对于控件周围的图形上的可视矩形但不包含控件)或面板?

3 个答案:

答案 0 :(得分:3)

您想要使用的是GroupBox。并非最重要的,但最重要的是,标签应该比面板便宜。

答案 1 :(得分:1)

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

答案 2 :(得分: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表单上可以有一个很多的控件,没有任何实际问题,所以如果你遇到因窗体上有太多控件而导致的问题,你可能最好重新设计整个表格