Может быть; Но это проще и лучше написать самостоятельно (если кто-то не предложит либо бесплатный элемент управления, либо лучший исходный код, который вы можете добавить в свой проект).
Немного мудрости GUI (я не придумал это, но мне лень включать ссылки):
Если список переключателей когда-либо будет содержать> 7-10 элементов, используйте список.
Конечно, я понимаю, что либо вы не контролируете это, либо, если вы это сделаете, не согласитесь с этим ответом.
- Добавьте прокручиваемую панель к вашей форме
- в коде, проходите через ваш список объектов. Внутри цикла:
- Создать новую радиокнопку
- установить свойство .top равным .bottom предыдущего (или 0, если не было предыдущего)
- поместите копию вашего объекта в свойство .Tag (чтобы вы могли сказать, какой объект был выбран)
- установить ширину, чтобы вы не получали горизонтальную полосу прокрутки в элементе прокрутки
- установить .text соответствующим образом. Возможно, вам придется усечь, чтобы избежать переноса. Если вы хотите использовать многострочные линии для переноса, вам нужно увеличить высоту, но для этого потребуется много гимнастики с control.creategraphics, graphics.MeasureString и другими функциями GDI +. См. Часто задаваемые вопросы Боба Пауэлла по GDI +.
- добавить обработчик, чтобы проверенные данные могли быть обработаны (AddHandler MyRB, address of CC_Sub)
- добавить его в прокручиваемый элемент управления
- Добавьте упомянутый выше CC_Sub - можете получить правильную сигнатуру функции, добавив радиокнопку, включив обработчик для CheckChanged и удалив радиокнопку
- В этом подпрограмме установите переменную типа вашего класса на уровне формы для тега отправителя (вам придется выполнить ввод с клавиатуры)
- Когда ваш пользователь нажимает кнопку ОК, возвращайте эту переменную, то есть выбранный объект.
ОК, это выглядит сложно. То же самое можно сказать, что выжимаете это из управления или расплачиваетесь наличными.
Если вам нужны более интересные вещи, вы можете создать пользовательский контроль с ярлыками, флажками / переключателями и т. Д. Вы должны обрабатывать выбор / отмена выбора. Затем добавьте пользовательский контроль на прокручиваемую панель вместо радиокнопки. Это обеспечивает практически неограниченную гибкость.