Проверьте, установлен ли хотя бы один флажок в двух формах Windows C#

#c# #visual-studio #winforms #class

Вопрос:

У меня есть проект для школы в visual studio, приложение Windows forms, C#, в котором есть 4 подключенные формы.

Соединение с 1-й по 2-ю и с 3-й по 4-ю форму было легко сделать. Но я не совсем уверен, как установить связь со 2-м по 3-й класс.

В моей 1-й и 2-й формах есть флажки, всего 12 — по 6 в каждой форме, и их нет в списке флажков (если это имеет значение). Итак, вот в чем моя проблема… Приложение представляет собой что-то вроде небольшого интернет-магазина. 1-я и 2-я формы действуют как страницы, где вы можете посмотреть и выбрать что-то для покупки. Когда вы закончите выбор, вы можете перейти на 3-ю «страницу»/форму, нажав кнопку. Но для того, чтобы перейти в 3-ю форму, я должен проверить, есть ли хотя бы один флажок на 1-й или 2-й «странице». Если хотя бы 1 флажок не установлен, на нем должно отображаться сообщение об ошибке. Я спросил свою учительницу о том, как я мог бы это сделать (поскольку она не показала нам, как сделать что-то подобное). Она сказала мне создать новый класс, в котором я мог бы написать код для проверки, но не более того.

Я огляделся, но так и не смог найти решение своей проблемы.

Все, что может немного помочь, мне просто нужно какое-то руководство, которое мой учитель не смог мне дать… Спасибо.

Комментарии:

1. Я не уверен, соответствует ли это требованиям вашего упражнения, но подумывали ли вы о том, чтобы поставить «Форму 1» и «Форму 2» на одно и то же Form и просто использовать два Panel переключения видимости панелей по мере необходимости. Таким образом, все компоненты работают одинаково Form , и проверка флажков становится довольно простой.

2. Если бы вы использовали привязку данных Windows Forms , вы могли бы обмениваться одними и теми же данными между формами, что упрощает выполнение такого рода требований.

3. @Джонни Пиклз, есть какие-нибудь новости? Пожалуйста, проверьте, подходит ли вам мой ответ.

Ответ №1:

Вы можете попробовать использовать приложение.Метод OpenForms и linq для получения текущего состояния управления формой.

Вот пример кода, на который вы можете сослаться:

Форма 1:

 private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}
 

Форма 2:

 private void button1_Click(object sender, EventArgs e)
{
    Form1 form1 = (Form1)Application.OpenForms["Form1"];
    int count1 = form1.Controls
        .OfType<CheckBox>()
        .Where(i => i.Checked)
        .Count();
    Form2 form2 = (Form2)Application.OpenForms["Form2"];
    int count2 = form2.Controls
        .OfType<CheckBox>()
        .Where(i => i.Checked)
        .Count();
    int totalcount = count1   count2;
    if(totalcount<1)
    {
        MessageBox.Show("You must choose at least one");
    }
    else
    {
        Form3 form3 = new Form3();
        form3.Show();
    }
}
 

Результат:

введите описание изображения здесь