#c# #winforms #checkbox
#c# #winforms #флажок
Вопрос:
Я использую Winforms, и у меня возникли проблемы с извлечением неопределенного состояния из флажка. он всегда возвращает «непроверенный»…
Я использую этот код, чтобы установить флажок в неопределенное значение при загрузке формы :
checkBox.CheckState = CheckState.Indeterminate;
это работает.
Затем, когда я нажимаю на флажок, запускается событие «CheckedChanged», и я ничего не хочу делать, если состояние не определено. Но он возвращает состояние «снято», в то время как флажок отображается как «неопределенный»..
вот как я пытаюсь получить состояние флажка :
CheckBox c = sender as CheckBox;
if (c.CheckState == CheckState.Indeterminate)
{
MessageBox.Show("Nope");
}
Я не нашел решения, кроме как в WPF, но я использую Winforms..
Спасибо, что нашли время, чтобы помочь мне.
Комментарии:
1.
ThreeState
для свойства установлено значениеtrue
?2. Да, похоже, что первый щелчок по флажку с тремя состояниями, который имеет неопределенное значение, устанавливает его в false. Если вы хотите, чтобы при первом нажатии для него было установлено значение true, попробуйте использовать флажок с двумя состояниями, который по умолчанию имеет значение false.
Ответ №1:
Я добавил CheckBox
элемент управления со ThreeState
свойством, равным true
.
В Form_Load
я установил значение CheckState
CheckState.Indeterminate
таким же образом, как и вы.
Я подписался на CheckStateChanged
событие на флажке.
Я могу получить CheckState следующим образом:
private void CheckStateChanged(object sender, EventArgs e)
{
var checkbox = sender as CheckBox;
switch (checkbox.CheckState)
{
case CheckState.Checked:
MessageBox.Show("Checked");
break;
case CheckState.Unchecked:
MessageBox.Show("Unchecked");
break;
case CheckState.Indeterminate:
MessageBox.Show("Indeterminate");
break;
default:
MessageBox.Show("Nothing");
break;
}
}
Очевидно, что вместо MessageBox у вас будет свой код.
Комментарии:
1. да, я использовал CheckChanged вместо CheckStateChanged, и для свойства ThreeState не было установлено значение true. я использовал ваш код, и он сработал! Спасибо