Этот мыслительный процесс "показать / скрыть" очень похож на пережиток боли и растерянности классического VB.Старые методы отображения и скрытия и т. Д. Приводили в замешательство и часто оставляли меня как разработчика в состоянии не знать, существует ли объект или он просто невидим.И проверка была тривиальной, только если вы использовали On Error Goto для предотвращения нулевой ссылки.Так что сразу я бы посоветовал не думать с точки зрения наглядности, если вы не делаете что-то с веб-страницей и не хотите сохранять пространство и состояние.
Сначала создайте форму Windows и добавьте ее в свой проект, предполагая, чтоэто тип проекта, который вы описываете.Украсьте форму соответствующими элементами управления и, если применимо, создайте свойства, чтобы обеспечить открытый доступ к значениям элемента управления.Также установите свойство DialogResult для кнопок, которые либо «ОК», либо «Отмена» формы.Дайте ему соответствующий стиль границы либо Fixed3D, либо FixedDialog.Возможно также установите свойство, для которого вы хотите, чтобы форма отображалась при запуске - родительский центр, центральный экран, Windows по умолчанию и т. Д. Обработчики событий для «OK» и «Отмена» должны вызывать this.Close ();чтобы закрыть окно.
С точки вызова в коде, вот некоторый гипотетический код, который поможет вам двигаться в правильном направлении.Напишите что-нибудь подобное в том месте, где вы хотите вызвать диалог.
int intResult = 0;<br />
string strResult = null;<br /></p>
<p>MyDialogForm frm = new MyDialogForm();<br />
frm.Title = "Select an Item";<br />
frm.SomeProperty = 0;<br />
frm.SomeOtherProperty = true;<br />
if (frm.ShowDialog() == DialogResult.OK)<br />
{<br />
intResult = frm.Result;<br />
strResult = frm.StringResult;<br />
}<br />
else if (frm.ShowDialog() == DialogResult.Cancel)<br />
{<br />
// User clicked the cancel button. Nothing to do except maybe display a message.<br />
MessageBox.Show("Canceled Task");<br />
}<br /></p>
<p>...</p>
<p>// Somewhere further on down, but within scope, simply repeat <br />
// what you just did, but without having to reinstantiate the <br />
// form Window. But if you make it that far within the same <br />
// scope, this method might be too busy and may need to be <br />
// factored down.<br />
Короче говоря:
- Scrap show / hide - егоне очень хорошая практика
- Сохранение данных формы без использования невидимой формы для ее сохранения;это работа класса
- Если пользовательскому интерфейсу требуется многократное переключение между окнами, проверьте свой дизайн на наличие других альтернатив для решения исходной проблемы.Может быть, вам нужен такой шаблон дизайна, как MVC, в зависимости от размера и сложности вашего приложения.
Звук хорош?