Масть размером с прямоугольник без текста, но имеет границу и невидима (для визуального прямоугольника на форме вокруг элементов управления, но не для того, чтобы содержать элементы управления) или панели?Какая меньшая занимаемая площадь в C#
ответ
Что вы хотите использовать, это GroupBox. Не то, чтобы это действительно имело значение, скорее всего, но ярлык должен быть дешевле, чем панель.
В этом случае это форма с элементом управления вкладкой, содержащим 32 страницы. да, это огромно, но это форма, которая редко используется и должна содержать все 32 страницы. Прямоугольник предназначен только для видимого разделения элементов управления на страницах. Сейчас у меня есть панели и, конечно, с 32 страницами, это медленная загрузка. Я собираюсь попробовать заменить панели ярлыками и посмотреть, лучше ли это. Нет, дизайн не изменится, независимо от того, думает ли весь мир, что он должен быть разбит на несколько форм: o) Спасибо! – TCH
Это ужасный дизайн. Честно говоря, ни один элемент управления вкладкой не должен иметь 32 страницы, он просто неприменим. –
Это не отвечает на вопрос. Иногда дизайнерские решения не принимаются разработчиком, и вам нужно жить с ним. – TCH
Ответ: не имеет значения, что имеет меньший размер, и если у вас есть проблема с дизайном (т. е. у вас есть способ слишком много элементов управления на вашей форме). Во всяком случае, вы должны просто использовать элемент управления, который подходит для задания, в данном случае, Panel или GroupBox.
Если это действительно проблема, лучший способ обеспечить визуальное разделение между элементами управления - это обработать событие 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 формы могут иметь лот элементов управления на них без каких-либо реальных проблем, поэтому, если у вас возникают проблемы, связанные с наличием слишком большого количества элементов управления в форме, вам может быть лучше переделать все это.
Вы создаете веб-приложение или настольное приложение – user161433
Я понятия не имею, но я не могу придумать, почему это имеет значение. CLR будет управлять гораздо большим объемом памяти, чем любой из этих объектов, поэтому это звучит как преждевременная оптимизация. – sipwiz