Предположим, на форме нужно разместить несколько независимых групп радиокнопок. Группируются радиокнопки как обычно - с помощью контрола Group Box. Но убогий инструмент визуального редактирования Visual Studio не позволяет включить группирование радиокнопок, даже если Вы их добросовестно разместили на форме, как полагается (каждая группа радиокнопок внутри своего Group Box).
После такого размещения логично ожидать, что группа Radio1/Radio2 будет работать отдельно от группы Radio3/Radio4, но не тут то было - после запуска приложение радиокнопки Radio1, Radio2, Radio3 и Radio4 иногда работают как одна группа. Я долго не мог понять, почему. Оказалось это происходит, если Вы сначала добавили 2 контрола Group Box, а потом 4 контрола Radio Button, даже не подозревая о том, что порядок добавления контролов в форму имеет значение - надо было сначала добавить первый Group Box, потом в него радиокнопки Radio1 и Radio2, потом добавить второй Group Box, и в него добавить радиокнопки Radio3 и Radio4.
Чтобы решить проблему, нужно сделать 2 вещи:
1. Установить в IDE Visual Studio у каждого Group Box, куда помещены радиокнопки, свойство Group в True (по умолчанию оно False).
2. Любым текстовым редактором вручную отредактировать файл ресурсов *.rc. Если Ваш проект называется testradio, то файл ресурсов будет называться testradio.rc. Когда его откроете, секция описания контролов на форме будет такого вида:
Нужно вторую строк GROUPBOX переставить перед CONTROL Radio3, это включит разделение радиокнопок Radio1, Radio2, Radio3 и Radio4 на две группы: После такой правки группа Radio1/Radio2 будет работать отдельно от группы Radio3/Radio4.
Другой способ решения проблемы - все контролы удалить и разместить их заново в требуемой последовательности (не забываем установить у контролов Group Box свойство Group в True). Причем важен именно порядок добавления контролов, а не место размещения радиокнопок - их можно даже поместить не в область Group Box. |