2009-09-24 2 views
0

Масть размером с прямоугольник без текста, но имеет границу и невидима (для визуального прямоугольника на форме вокруг элементов управления, но не для того, чтобы содержать элементы управления) или панели?Какая меньшая занимаемая площадь в C#

+0

Вы создаете веб-приложение или настольное приложение – user161433

+2

Я понятия не имею, но я не могу придумать, почему это имеет значение. CLR будет управлять гораздо большим объемом памяти, чем любой из этих объектов, поэтому это звучит как преждевременная оптимизация. – sipwiz

ответ

3

Что вы хотите использовать, это GroupBox. Не то, чтобы это действительно имело значение, скорее всего, но ярлык должен быть дешевле, чем панель.

+0

В этом случае это форма с элементом управления вкладкой, содержащим 32 страницы. да, это огромно, но это форма, которая редко используется и должна содержать все 32 страницы. Прямоугольник предназначен только для видимого разделения элементов управления на страницах. Сейчас у меня есть панели и, конечно, с 32 страницами, это медленная загрузка. Я собираюсь попробовать заменить панели ярлыками и посмотреть, лучше ли это. Нет, дизайн не изменится, независимо от того, думает ли весь мир, что он должен быть разбит на несколько форм: o) Спасибо! – TCH

+1

Это ужасный дизайн. Честно говоря, ни один элемент управления вкладкой не должен иметь 32 страницы, он просто неприменим. –

+0

Это не отвечает на вопрос. Иногда дизайнерские решения не принимаются разработчиком, и вам нужно жить с ним. – TCH

1

Ответ: не имеет значения, что имеет меньший размер, и если у вас есть проблема с дизайном (т. е. у вас есть способ слишком много элементов управления на вашей форме). Во всяком случае, вы должны просто использовать элемент управления, который подходит для задания, в данном случае, Panel или GroupBox.

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 или его конструктор (используя сгенерированный код).

Я должен повторить то, что сказал Эд. .Net формы могут иметь лот элементов управления на них без каких-либо реальных проблем, поэтому, если у вас возникают проблемы, связанные с наличием слишком большого количества элементов управления в форме, вам может быть лучше переделать все это.