#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();
}
}
Результат: