0

Столкнулся с проблемой при создании обработчика на кнопку. У меня есть форма, на которой ещё нет элементов, кроме кнопки с обработчиком. Форма в Visual Studio Форма с кнопкой и с ещё не созданными элементами Форма запущенной программы с созданными элементами. введите сюда описание изображения Создание нужных элементов с данными из БД (для наглядности оставил только создание чекбоксов).

        //Метод, который выполняется при запуске программы
        public void LoadIngredient()
        {
            //Данные из БД
            MySqlConnection MSConnection = DBConnection.ConnectionOpen();
            MySqlCommand MSCommand = new MySqlCommand("SELECT * FROM ингредиент;", MSConnection);
            MySqlDataReader ingredient = MSCommand.ExecuteReader();
            while(ingredient.Read())
            {
                //Создание сетки
                var bc = new BrushConverter();
                Grid global = new Grid
                {
                    Background = (Brush)bc.ConvertFrom("#FFECECEC"),
                    Margin = new Thickness(0, 10, 0, 0)
                };
                //Создание чекбокса
                CheckBox addIngredient = new CheckBox
                {
                    Content = "Чекбокс",
                    HorizontalAlignment = HorizontalAlignment.Left,
                    Margin = new Thickness(10,14,0,0),
                    VerticalAlignment = VerticalAlignment.Top,
                };
                global.Children.Add(addIngredient);
                parrent.Children.Add(global);
            }
            ingredient.Close();
            MSConnection.Close();
            MySqlConnection.ClearAllPools();
        }

Но столкнулся с тем, что не могу написать обработчик, в котором я ссылаюсь на ещё не созданные элементы на форме, т.к. они создаются только при запуске.

        //Тот самый обработчик, который висит на кнопке
        private void ПроверкаЧекбокс(object sender, RoutedEventArgs e)
        {
            if (checkBox2.IsChecked == true) MessageBox.Show("Выбран чекбокс " + checkBox2.Content);
        }

Ошибка (Все ссылки на метод и обработчик есть, просто для удобочитаемости переименовал) Ошибка в коде обработчика события кнопки Как я могу решить данную проблему? Учитывая, что элементы должны создаваться динамически, т.е. после запуска программы, но как ссылаться на них в коде в обработчике кнопки я не понимаю.

sprsuv
  • 3
  • Привязки данных и MVVM решают все такие вопросы, надо только начать учить матчасть. Вы пытаетесь подружиться с WPF как делали с Winforms, но это очень неэффективный подход. Ну и про ООП+SOLID тоже попутно почитать не помешает, чтобы писать нормальный распределенный код, а не мешанину с дублированием строк. https://ru.stackoverflow.com/a/1116136/373567 – aepot Apr 06 '22 at 12:03
  • Вот еще пример https://ru.stackoverflow.com/a/1141941/373567, и еще один https://ru.stackoverflow.com/a/1093568/373567 – aepot Apr 06 '22 at 12:09
  • вот ещё хороший и простой пример - https://nationalteam.worldskills.ru/skills/rabota-s-bazoy-dannykh-v-prilozhenii-chtenie-dobavlenie-redaktirovanie-udalenie-dannykh-chast-1/ . Он не совсем про чекбоксы, но может помочь. – Pekor Apr 06 '22 at 13:08

0 Answers0