C # Winforms: эффективно отображает множество элементов управления - PullRequest
13 голосов
/ 16 сентября 2010

Я создаю элемент управления, который состоит из 15x15 = 225 кнопок и должен быть изменяемого размера. Поскольку это сетка, якорь и стыковка не будут работать. Я пробовал и TableLayoutPanel, и обработку события resize для ручного размещения и управления размером. В обоих случаях изменение размера является недопустимо медленным. Приостановка / возобновление макета в функции изменения размера, когда я вручную обрабатываю макет, не помогает.

Есть ли что-то фундаментальное, что я могу изменить, чтобы ускорить процесс, или это просто ограничение нативного управления? Я понимаю, что могу создать собственный элемент управления с нуля, обрабатывать щелчки и рисовать самостоятельно - хотя я бы предпочел придерживаться собственных элементов управления, если это возможно.

Редактировать

Я знаю, что это много кнопок. Мой вопрос технический. не один о дизайне пользовательского интерфейса.

1 Ответ

7 голосов
/ 16 сентября 2010

К сожалению, WinForms не поддерживает одновременное отображение такого количества элементов управления.

Если бы я был в вашей ситуации, я бы сначала подумал, можно ли разделить форму на несколько страниц. Во многих случаях это будет легче понять и пользователю.

Но в вашем случае это не вариант. Вы делаете что-то вроде игры тральщика? Там у вас есть сетка кнопок, которые все кликабельны. В такой ситуации я бы посоветовал вам использовать пользовательский нарисованный элемент управления, в котором все кнопки объединены в одном элементе управления. Не создавайте составной элемент управления, содержащий 225 кнопок - это совсем не поможет: -)

Последний вариант - переключиться на WPF. WPF использует аппаратно ускоренный рендеринг, поэтому он может быть быстрее, но с таким большим количеством элементов управления, даже это не поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...