افتح النموذج المغلق
-
10-12-2019 - |
سؤال
أنا أتساءل كيف يمكنني فتح النموذج المغلق مرة أخرى باستخدام this.Close().في كل مرة أحاول فتح النموذج المغلق باستخدام Mainmenu.Show()، يؤدي الاستثناء إلى ظهور خطأ "لا يمكن الوصول إلى الكائن الذي تم التخلص منه.اسم الكائن:القائمة الرئيسية".
كيف يمكنني فتحه مرة أخرى؟
المحلول
عندما Close
يتم استدعاء الطريقة على أ Form
لا يمكنك الاتصال بـ Show
طريقة لجعل النموذج مرئيًا، لأن موارد النموذج قد تم إصدارها بالفعل والمعروفة أيضًا باسم Disposed
.لإخفاء نموذج ثم جعله مرئيًا، استخدم أسلوب Control.Hide.
إذا كنت تريد إعادة فتح نموذج تم إغلاقه، فستحتاج إلى إعادة إنشائه مرة أخرى بنفس الطريقة التي أنشأته بها في البداية:
YourFormType Mainmenu=new YourFormType();
Mainmenu.Show();
نصائح أخرى
أفترض أن لديك نموذجًا رئيسيًا، مما يؤدي إلى إنشاء نموذج فرعي غير مشروط.نظرًا لأنه يمكن إغلاق هذا النموذج الفرعي بشكل مستقل عن النموذج الرئيسي، فمن الممكن أن يكون لديك سيناريوهين:
- لم يتم إنشاء النموذج الفرعي بعد، أو تم إغلاقه. في هذه الحالة، إنشاء النموذج وإظهاره.
- النموذج الفرعي قيد التشغيل بالفعل. في هذه الحالة، ما عليك سوى إظهاره (قد يتم تصغيره، وسوف ترغب في استعادته).
في الأساس، يجب أن يتتبع النموذج الرئيسي عمر النموذج الفرعي، من خلال التعامل معه FormClosed
حدث:
class MainForm : Form
{
private ChildForm _childForm;
private void CreateOrShow()
{
// if the form is not closed, show it
if (_childForm == null)
{
_childForm = new ChildForm();
// attach the handler
_childForm.FormClosed += ChildFormClosed;
}
// show it
_childForm.Show();
}
// when the form closes, detach the handler and clear the field
void ChildFormClosed(object sender, FormClosedEventArgs args)
{
// detach the handler
_childForm.FormClosed -= ChildFormClosed;
// let GC collect it (and this way we can tell if it's closed)
_childForm = null;
}
}
لا يمكنك إظهار نموذج مغلق. يمكنك استدعاء هذا "hide () لإغلاق النموذج. في وقت لاحق يمكنك الاتصال النموذج. شاو ()؛
إما أنه أو تحتاج إلى إنشاء النموذج مرة أخرى.
إضافة صغيرة إلى التعليمات البرمجية الذكية المقدمة أعلاه giveacodicetagpre.