الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تفعل زر فتح الفورم عندغلقه في MDIParent

بدأه zaka88 في 11 مايو 2010 · 5 رد · 1,339 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمت الله تعالى وبركاته

لدي مشكل وجدت له حلا لكن لم يدم

لدي في برنامجي MDIParent

كما في الصورة

248808346.jpg

اريد كما في الصورة عندما افتح فورم معين يصبح الزر المسؤول عن فتح غير مفعل

وعند غلق الفورم يعود الزر للحالة الطبيعية

الفكرة التي عملت بها كالتالي

في كود الزرأجعله غير مفعل

وفي الحدث(formclosing)للفورم اعيده للحالة العادية

ولكي استطيع الوصول للزر واغير في خصائصه جعلته ثابت ومتاح للجميع(public static)

مثلا:

public static System.Windows.Forms.MenuStrip menuStrip;

عند اول تنفيذ للبرنامج ينجح الامر

لكن عند اعادة التشغيل مرة اخرى او التعديل على MDIParent كأن اضيف زر

ترجع الاعدادات للحالة السابقة

مثلا الكود الماضي يصبح

public System.Windows.Forms.MenuStrip menuStrip;

بشكل تلقائي

ارجوا المساعد في حل المشكل

وان كان هناك طريقة اخرى ارجو الافادة

وشكرا مسبقا

#2

Insert_InfromationToolStripMenuItem.Enabled = true; لتنشيط الزر Insert_InfromationToolStripMenuItem.Enabled = false; لي اخفاء الزر .. استخدمها في ما يناسبك اتوقع بعد Form1.showDilogy(); تضع الامر الاخفاء ومن ثم this.hide(); تضع بعدها امر التنشيط واسف جداً على اللخبطه في الكتابه بس في مشكله عندي مع المنتدى لا يمكني استخدام نمط الكود وايضاً يلغي النتر بين الاسطر . .. دعواتكم

#3

السلام عليكم،،

يبدو لي ان هدفك هو عدم فتح اكثر من فورم من نفس الفورم تايب

ما رايك لو تقوم بالتاكد قبل فتح فورم جديد ما اذا كان هناك فورم مفتوح من نفس التايب

لديك ال Application.openForms تستطيع استخدامها

اذا كان الفورم مفتوح frm.BringToFront & frm.SetFocus

سبحان الله وبحمده *** سبحان الله العظيم

www.quraany.com

www.arabcs.com

#4

التعديل فى الكود الموجود فى ملف الـ Designer غير مجدى

لأنه - كما حدث معك بالفعل - اى تعديل فى اى control على الشاشة سوف يتم عمل تحديث للمف وإنشاؤه من جديد

لذلك لا تفتح هذا الملف إلا إذا كنت ترغب فى قراءته

طبعاً يمكنك عمل Disable للزر فى حدث click بدون اى مشاكل

أما عن كيفية عمل Enable عند إغلاق الـ Form

فسوف تستخدم حدث FormClosing او FormColsed

يمكنك ان تستخدم الكود التالى:

            MenuStrip MainMenu = new MenuStrip();
            ToolStripMenuItem mn = (ToolStripMenuItem)MainMenu.Items["Sub_Menu_Name"];
            mn.DropDownItems["Button_Name"].Enabled = true;

طبعاً السطر الأول للعرض فقط

وهو تعريف لـ Menu جديدة

فى الكود الخاص بك سوف تستخدم الـ Menu المعرفة فى الـ MDIForm

السطر الثانى يشير الى القائمة الفرعية التى تحتوى على الزر

السطر الثانى يشير الى الزر نفسه

وبالتوفيق

إضافة

للوصول الى الـ Menu الموجود فى الـ MDI من Form آخرى

يمكنك استخدام

MenuStrip Menu = Application.OpenForms["MDI_Form"].Controls["MENU_Name"] as MenuStrip;

تم تعديل هذه المشاركة بواسطة Ahmed Metwally في 11 مايو 2010 في 10:24

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#5

شكرا لردودكم جميعا

ولكن لم اصل للحل حتى الان ربما لانني لم اشرح المشكل بالشكل المناسب

المشكل بالضبط كما قال الاخ XR.7

XR.7 كتب:

السلام عليكم،،

يبدو لي ان هدفك هو عدم فتح اكثر من فورم من نفس الفورم تايب

ما رايك لو تقوم بالتاكد قبل فتح فورم جديد ما اذا كان هناك فورم مفتوح من نفس التايب

لديك ال Application.openForms تستطيع استخدامها

اذا كان الفورم مفتوح frm.BringToFront & frm.SetFocus

لكن احتاج لبعض التوضيح فقد حاول استعمال هذه الدوال ولم افلح

#6

أهلا بالاخ

كيف الحال ان شاء الله امورك كلها كويسة

جرب ما يلي :

أضف الكود التالي في نهاية الدالة ShowNewForm:

   // Child Form Close event
childForm.FormClosing += new FormClosingEventHandler(childForm_FormClosing);

newToolStripButton.Enabled = false;
newToolStripMenuItem.Enabled = false;

وأضف الدالة التالية بعد الدالة السابقة:

void childForm_FormClosing(object sender, FormClosingEventArgs e)
{
    newToolStripButton.Enabled = true;
    newToolStripMenuItem.Enabled = true;
}

ويجب عليك تبديل اسم البوتون لما يناسبك

بالتوفيق

مواضيع مشابهة