Программно созданный CheckBox не запускает события Checked / Unchecked - PullRequest
0 голосов
/ 22 октября 2018

У меня есть простое приложение WPF, которое использует «рамку» для многостраничной навигации.На одной из этих страниц создается серия CheckBoxes и добавляется пара обработчиков (Checked / Unchecked) для каждого созданного флажка.CheckBoxes работают так, как задумано, и программно доступны, их можно проверить или снять щелчком, но ни одно из двух событий никогда не срабатывает, если я нажимаю.

Вот создание CheckBoxes:

ModuleStackpanels[i].Children.Add(ModuleCheckBoxes[i]);
StackPanel.SetZIndex(ModuleCheckBoxes[i], 2);
ModuleCheckBoxes[i].Checked += new RoutedEventHandler(ModuleCheckBoxClick);
ModuleCheckBoxes[i].Unchecked += new RoutedEventHandler(ModuleCheckBoxClick);

Куда я иду от 0 до 30. Тогда у меня есть обработчик:

private void ModuleCheckBoxClick(object sender, RoutedEventArgs e)
{
    int CheckBoxCounter = 0;

    for(int i=0;i<30;i++)
    {
        if (ModuleCheckBoxes[i].IsChecked == true) CheckBoxCounter++;
    }

    if(CheckBoxCounter > 1)
    {
        Button_QueryStatus.IsEnabled = false;
    }
}

Но ничегоуволен.У кого-то есть идея?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Хорошие новости!Не все флажки имели обработчик событий из-за ошибки при создании кнопок.Он был у 3 на 30, и эти кнопки представляли собой предмет другого типа.

0 голосов
/ 22 октября 2018

Попробуйте использовать CheckedChanged вместо Checked и Unchecked.

Например:

public bool checkedthecheckbox { get; set; }

CheckBox testchbox = new CheckBox();

private void Form1_Load(object sender, EventArgs e)
{
    testchbox.CheckedChanged += new EventHandler(testchbox_CheckedChanged);
}

void testchbox_CheckedChanged(object sender, EventArgs e)
{
    if (testchbox.Checked)
        checkedthecheckbox = true;
    else
        checkedthecheckbox = false;
}

В вашем случае:

ModuleStackpanels[i].Children.Add(ModuleCheckBoxes[i]);
StackPanel.SetZIndex(ModuleCheckBoxes[i], 2);
ModuleCheckBoxes[i].CheckedChanged += new EventHandler(ModuleCheckBoxClick);

private void ModuleCheckBoxClick(object sender, RoutedEventArgs e)
{
    int CheckBoxCounter = 0;

    for(int i=0;i<30;i++)
    {
        if (ModuleCheckBoxes[i].IsChecked == true) CheckBoxCounter++;
    }

    if(CheckBoxCounter > 1)
    {
        Button_QueryStatus.IsEnabled = false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...