Я создал пользовательский button control
и хочу, чтобы он вел себя как RadioButtons
в группе. Кнопка будет помещена в группу или коллекцию ее типа на тот же container
или panel
(кнопка перетаскивалась на контейнер). Когда я нажимаю любую из этих кнопок, мне нужно, чтобы произошло следующее:
Измените BackColor
нажатой кнопки на предопределенный цвет: Color.Cycan;
Установите проверенное состояние нажатой кнопки с false
на true
Убедитесь, что все остальные кнопки того же типа на той же панели / контейнереустановить их настройки по умолчанию: BackColor = Color.Gray;
checked = false;
Я пробовал ниже code
, но я получаю этот результат:
BackColor
нажатой кнопки успешно изменяется на Color.Cycan;
Значение по умолчанию BackColor
всех других кнопок того же типа включенотот же контейнер успешно устанавливается по умолчанию: Color.Gray;
Но checked state
нажатой кнопки не меняется на true.
Он остается false.
Я приложил код, который я пробовал, ниже:
В чем может быть проблема или где я упускаю суть?
Это кнопка управления Winform / Windows Forms
, и я программирую на C#.
Я не хочу использовать переключатель для этого, потому что у меня есть пользовательский дизайн MyButton
.
Спасибо.
Это код, который я пробовал:
//Вызов ClickedButton ();по событию клика.
private bool checked = false;
private void ClickedButton()
{
do(
BackColor = Color.Cycan;
checked = true;
if(Parent == null)
break;
foreach(MyButton button in Parent.Controls.OfType<MyButton>())
{
if(button == this) { continue }
else{
BackColor = Color.Gray;
checked = false;
}
}
)
while(false)
}