2012-12-03 1 views
0

У меня есть form1, у которого есть кнопка команды, которая открывает форму 2, которая затем имеет некоторые флажки. Когда я запускаю программу form1, появляется первая, и я нажимаю на кнопку команды, чтобы перейти к form2, затем я нажимаю на один из флажков, и если я вернусь к form1 и снова вернусь к form2, этот флажок меняет свое состояние на unchecked еще раз. Как я могу сохранить его состояние при «проверке»? Единственный фрагмент кода, который у меня есть, - это кнопка команды from from1.Сохранять состояние флажка при изменении между формами

private void button3_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    Form4 form4 = new Form4(); 
    form4.Show();  
} 
+0

Это не C, проверьте свои метки. – andyn

+1

Это C или C#? Только тег как один или объясните, почему и то, и другое. – djechlin

+0

это C# извините за это! –

ответ

1

Лучший способ думать о такого рода проблем является разделение пользовательского интерфейса («Вид») от состояния данных, под редакцией приложения («модель»).

Имейте состояние, хранящееся, скажем, экземпляр класса, доступный для обеих форм. Свяжите состояние флажка в каждой форме с состоянием логического свойства, представляющего проверенное состояние в этом экземпляре класса.

В зависимости от используемой технологии пользовательского интерфейса существует лучшая или меньшая поддержка привязки свойства модели к элементу пользовательского интерфейса, который представляет значение этого свойства. В WPF и Silverlight есть хорошая поддержка. WinForms не обеспечивает хорошую поддержку из коробки, но есть сторонние библиотеки, которые добавляют приличную поддержку, или вы можете вручную подключить состояние этого флажка к состоянию поддержки свойств boolean, которые используют использование обработчиков событий.

Это часть шаблона, известного как MVC или Model-View-Controller.

+0

Спасибо, Эрик, я понял, что ты имеешь в виду, какой-либо предлагаемый код? Или какая-то ссылка, может быть, будет замечательной. Я только начал C#, и у меня не было опыта программирования! –

+0

@KostasMar: Если вы программируете WinForms по выбору, не делайте этого. Используйте более современные интерфейсы пользовательского интерфейса, такие как Metro или WPF. Если вы хотите использовать WinForms, посмотрите на эту среду MVC для WinForms: http://www.codeproject.com/Articles/383153/The-Model-View-Controller-MVC-Pattern-with-Csharp. Он порядочный, хотя и не такой мощный, как поддержка в WPF. Также читайте о MVC в целом. Хорошая отправная точка: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller –

 Смежные вопросы

  • Нет связанных вопросов^_^