В моем учебном путешествии я пришел к выводу, что Visual Studio жалуется на мой путь к открытию, закрытию и удалению формы (после того, как я закончил с этим). То, как я это делаю; Visual Studio говорит мне, что:Правильно открыть, закрыть и удалить форму с помощью «использования».
i.e: «Form1 создает IDisposable Types».
Поскольку я хочу сделать это правильно; Я немного выкопал, и мне удалось немного понять, как работает «использование», и должно быть реализовано; что обеспечивает правильное удаление вещей. Wich работал как очарование для моих методов SQL базы данных (Insert, Update & Delete); где SqlConnection & SqlCommand, где создаются типы IDisposable.
Согласно некоторым недавним исследованиям: Try, Catch и, наконец, я должен быть в состоянии выполнить то же самое, что и с: «using» statement; но он также закроет форму, даже не используя ее. Также с Try, Catch, Наконец; форма закрывается, даже не используя ее, и Visual Studio будет вызывать те же сообщения «IDisposable Types».
Дальнейшие слова; после всего «использования» информации, которую я нашел; Я смог значительно улучшить свое приложение (и мой стиль кодирования); однако я не могу понять, как использовать «использование» с помощью формы ... Я могу создать экземпляр формы, но я не могу сохранить открытую форму до тех пор, пока я не покончу с ней, или пользователь не нажмет «Закрыть». Поэтому мой вопрос: как правильно это реализовать? или это вообще возможно?
Пример с использованием:
private void OpenForm1()
{
// Create a new instance of Form1
using (var f1 = new Form1())
{
// Some Code Here
}
// Form1 Instance Gets Disposed at the End of the Loop Above.
}
Пример моего текущего (скромного) Открыть & Закрыть Форму Метода:
Малого Примечание: Я звоню этот метод пыльника от класса, который будет контролировать:
- Открыть & Закрыть Формы
па данных СЭД через форм
private Form1 f1; public void OpenForm1(bool _Open, int _LocX, int _LocY) { try { switch (_Open) { case true: // Close & Dispose "Form1" (if Opened) if (f1 != null) { OpenForm1(false, 0, 0); } // Re-Open Form1 with New Data (if Closed) if (f1 == null) { f1 = new Form1(_LocX, _LocY); } f1.Show(); break; case false: if (f1 != null) { f1.Close(); f1.Dispose(); f1 = null; } break; } } catch (InvalidOperationException _IOE) { MessageBox.Show(_IOE.Message); } }
Примечание: Я знаю, что в качестве альтернативы может использовать/сделать IDisposable шаблон (которым я до сих пор не понимаю, как реализовать или использовать его на практике - просто теория до сих пор. Все мои попытки потерпели неудачу; заставляют меня быть подавленным и сомневаться, если это будет считаться хорошей практикой).
Заранее спасибо. С наилучшими пожеланиями;
Этот метод 'OpenForm' довольно сложный для того, что он делает.Он полагается на побочные эффекты рекурсивного вызова себя на работу, и, несмотря на его название, его можно использовать для * закрытия * формы. Просто создайте соответствующий метод 'CloseForm'. Что касается этой ошибки, каков конкретный код ошибки? CA1001? CA1063? Или что-то другое? Возможно, вы просто жалуетесь, что не используете 'f1' в' 'Dispose'' Form1'', поэтому он не может гарантировать, что он всегда находится в распоряжении (даже если вы всегда это делаете, в другом месте). –
Greetings Pieter; Он отображает CA1001. – Richard