كيفية بناء تطبيقات MDI (Multiple-Document Interface) Application !!

هل أردت يوما ان تقوم ببناء تطبيق تكون فيه النوافذ داخل نافذة رئيسية في البرنامج، هذا ما سنتعرف عليه في هذه المقالة، فدعنا نبدأ سوية من اتمام هذا الأمر.دعنا في البداية نقوم بانشاء برنامج من نوع Windows Application، سيظهر لك واجهة وحيدة هي Form1، دعنا نغير اسمها إلى MainForm، وبعدها قم بإنشاء فورم جديدة دعنا نسميها Child1، والان ما سنفعله أننا سوف نجعل الفورم الابن الجديدة المضافة عند فتحها سوف تظهر داخل الواجهة الرئيسية.

MDI 8.jpg 

 

 

والان ما علينا فعله دعنا نقوم بإضافة شريط القوائم MenuStrip من شريط الأدوات، وقم بتعديلها لتصبح على النحو التالي:

MDI 0.jpg

 

 

والان:

1.      في الواجهة Main Form إذهب إلى الخصائص وابحث عن الخاصية IsMdiContainer وحول قيمتها من False إلى True.

2.      إذهب إلى القائمة Childrens التي اضفناها سابقا وانقر نقرا مزدوجا على الخيار Child1، ليتم تفعيل الحدث Click لها.

3.      قم بكتابة الكود التالي:

private void child1ToolStripMenuItem_Click(object sender, EventArgs e)
{
    Child1 child = new Child1();
    child.MdiParent = this;
    child.Show();
}

والان شغل البرنامج واطلب أمر فتح النافذة الابن الأولى، لتظهر لك الواجهة التالية:

 

MDI 1.jpg

 

طبعا في الكود السابق كل ما قمت بعمله هو التصريح عن كائن اسنه child من الصف Child1 من خلال التعليمة:

 

 

Child1 child = new Child1();

ثم قمنا بإعلام هذا الابن إلى الاب الذي يتبع له من خلال السطر التالي:

child.MdiParent = this;

طبعا this تمثل الكائن من الصف الذي تنتمي له وهو هنا MainForm، بقي أمر أخير هو أظهار هذه النافذة من خلال التعليمة:

child.Show();   

والان لم ننتهي بعد دعنا نكرر العمليات السابقة من أجل واجهة جديدة تدعى Child2، لتصبح الواجهة على النحو التالي:

MDI 2.jpg

 

 

 

والان دعنا نضيف إلى القائمة Children الخيار التالي، Get Name Of Active Child اي اظهار اسم الواجهة المفعلة حاليا في MessageBox، الغاية من هذه العملية معرفة كيفية تحديد الواجهة المفعلة الان لاحظ الشكل التالي:

 

MDI 3.jpg

 

 

 

والان قم بكتابة الكود التالي في الحدث الخاص بالخيار السابق:

private void getNameOfChildToolStripMenuItem_Click(object sender, EventArgs e)
{
    Form frm = this.ActiveMdiChild;
    MessageBox.Show(frm.Text);
}

والان دعنا نقوم بإضافة أمر آخر وهوترتيب هذه الواجهات عندما تكون مفتوحة، حتى نستطيع عمل ذلك دعنا نضيف قائمة تدعى Arrange وإضافة الاوامر التالي إليها لاحظ الشكل التالي:

MDI 4.jpg

 

والان دعنا نبدأ بالخيار Horizontal، انقر عليها نقرا مزدوجا واكتب الكود التالي:

private void horizontalToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.LayoutMdi(MdiLayout.TileHorizontal);
}

وكذلك الأمر بالنسة للـ Vertical:

private void verticalToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.LayoutMdi(MdiLayout.TileVertical);
}

وأخيرا Cascade:

private void cascadeToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.LayoutMdi(MdiLayout.Cascade);
}

وقم بتجربة البرنامج ولاحظ الأشكال التالية:

 

 

MDI 5.jpg
MDI 6.jpg

 

بقي شيء أخير هو اضافة قائمة تدعى Window منخلالها سيتم إظهار النوافذ المفتوحة وأي نافذة مفعلة حاليا، لاحظ الشكل التالي:

 

MDI 7.jpg

 

 

 

والان كل ماعليك فعله هي: بعد أن تحدد القائمة MenuStrip  إذهب إلى نافذة الخصائص ومن خلال الخاصة MdiWindowListItem حدد اسم القائمة التي تود ان يتحقق لها الأمر الذي نريده طبعا سنختار هنا  windowToolStripMenuItem، شغل البرنامج ولاحظ الشكل التالي:

MDI 8.jpg

 

لتحميل مثال الدرس إليك الرابط التالي:http://www.eclasshome.com/attach/upload3/wh_54743652.zip

 

 

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s