2012-01-19 3 views
0

Предположим, что я нарисовал 1000 меток на форме окна, как формирование сетки, и каждая метка уникально идентифицирована (например: S001, S002, ... S999) в 10 путем формирования сетки. Можно ли нарисовать прямоугольник вокруг некоторых меток и, таким образом, выбрать только те метки в прямоугольнике. Тогда я мог бы изменить, например, цвет этих меток.Выбор нескольких меток в форме окна

вы можете спросить, что я пытаюсь достичь; Я хочу нарисовать прямоугольники, чтобы они представляли автомобильные отсеки, как паркинг, выбирая некоторые заливы и меняя цвет, тогда я могу сказать, что они зарезервированы и т. Д. Также я могу хранить имена ярлыков в базе данных и менять цвет «заливов», если залив занят или нет, и если он занят, используйте событие mousehover для отображения информации о транспортном средстве с помощью всплывающего или подсказки.

Можно ли это сделать?

+0

Вы хотите нарисовать прямоугольник во время выполнения, на форме и обнаружить все метки, попадающие внутрь такого прямоугольника? –

+0

Да Давиде, тогда пользователь может выбрать определенный блок заливок (ярлыков), чтобы он мог сделать некоторое планирование на будущее – Privesh

+0

Это может быть не тот ответ, который вы ищете, но я бы предложил не использовать столько элементов управления Windows. Помните, что каждый из этих ярлыков (или любой элемент управления Windows, если на то пошло) будет иметь свою собственную обработку, которая может быть неактуальной для того, что вы делаете. Они будут красть бит процессора каждый раз, когда они хотят обрабатывать свои сообщения. Конечно, использование элементов управления - это простой способ, но не лучший и эффективный. Google для решений GDI от Боба Пауэлла, и вы узнаете многое из его ответов. Опять же, как я уже сказал, это могут быть ваши ответы, но может улучшить ваше приложение в целом. – silverspoon

ответ

0

Да, это возможно. В WPF вы могли бы добиться этого намного проще. Просто сохраните коллекцию ваших моделей просмотра экземпляров «лот» и покрасьте каждый из них соответствующим образом через Color={Binding LotColor}

Что касается Windows Forms, один из способов - перебрать все элементы управления ярлыками, а те, имена которых взяты автостоянка, получит свою границу (чтобы нарисовать прямоугольник) и свойства Font Color отрегулированы соответственно.

0

Вы можете создать свой собственный класс для управления всеми объектами Label. Он может иметь такой метод, как public List<Label> GetLabelsInRectangle(Rectangle rectangle), чтобы предоставить список всех объектов, которые вы хотите перекрасить. Я полагаю, что внутри он мог бы использовать двумерный массив объектов Label.

+0

так можно сделать, вздох. Жаль, что я был хорош в C#, но я думаю, 1 шаг за раз – Privesh

Смежные вопросы