Создание меток сообщений об ошибках на основе пользовательского ввода WPF C#
Привет,
Я создаю приложение WPF на C#, которое создает математические задачи для детей(сложение, вычитание и т. д.). В одном пользовательском контроллере у меня есть кнопка "Начать", которая загружает другой UC, и в этом UC у меня есть 10 задач, рядом с каждой задачей у меня есть текстовое поле для ввода ответа пользователем, и у меня есть кнопка "Подтвердить" (все это динамически создается), чтобы иметь возможность составить список ответов пользователя при нажатии кнопки. Но теперь у меня есть проблема с пустыми текстовыми полями.
Я хочу, когда нажимается кнопка "Подтвердить", проверить, есть ли пустое текстовое поле, и если есть/есть, я хочу, чтобы рядом с этим пустым полем/э появилась метка/ы с некоторым текстом. Как только пользователь начнет печатать в том или ином конкретном текстовом поле(окнах), я хочу, чтобы эта метка исчезла.
Что я уже пробовал:
This is where I create tasks and Text Boxes:
public void CreateTasksVisually(UCFirstLevelAddition userControl, List<string> additionTasksList) { int x = 350, y = 200; for (int i = 0; i < 10; i++) { userControl.Controls.Add(new Label { Text = additionTasksList[i], Height = 40, Width = 100, Name = "additionTaskLabel" + i, BackColor = Color.Transparent, Location = new Point(x, y + 15) }); userControl.Controls.Add(new TextBox { Name = "container" + i.ToString(), Text = "", Height = 20, Width = 50, BackColor = Color.White, Location = new Point(x + 120, y + 15) }); y = y + 60; } }
Именно здесь я создаю кнопку "Подтвердить":
public Button CreateSubmitBtnVisually(UCFirstLevelAddition userControl) { int x = 350, y = 200; Button submitBtn = new Button(); submitBtn.Name = "btnSubmit"; submitBtn.Text = "Potvrdi"; submitBtn.Size = new Size(100, 40); submitBtn.Location = new Point(350, 829); submitBtn.Click += new EventHandler(userControl.submitBtn_Click); userControl.Controls.Add(submitBtn); return submitBtn; }
И вот здесь я пытаюсь проверить, не пусто ли какое-нибудь из текстовых полей:
public void CreateEmptyContainerLabels(UCFirstLevelAddition userControl) { int x = 550, y = 180; Label message = new Label(); foreach (Control c in userControl.Controls) { if (c is TextBox) { TextBox container = c as TextBox; if (container.Text.Length == 0) { message.Text = string.Format("Ne sme biti prazno!"); message.Width = 400; message.ForeColor = Color.Red; message.Font = new Font("Century Gothic", 16, FontStyle.Bold); message.Location = new Point(x, y + 40); } userControl.Controls.Add(message); y = y + 60; } } }
Но этот чек не делает того, что я хочу. Вы можете мне помочь с этим?
Заранее благодарю.
BillWoodruff
смотрите: https://kmatyaszek.github.io/wpf%20validation/2019/03/06/wpf-validation-using-idataerrorinfo.html
BillWoodruff
Просто чтобы убедиться: это в WPF или WinForms для создания ?
BillWoodruff
Также смотрите: https://stackoverflow.com/a/18204513/133321