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

New Windows Forms Style

مغلق
بدأه prince of egypt في 9 يونيو 2003 · 3 رد · 1,236 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

انا بصراحة الموضوع عجبنى جدا وحبيت انى اكتبه فى المنتدى لعله يستفيد منه اعضاء المنتدى ولاسيما المبتدئين مثلى.

كل الكلام النهادره او معظمه هيدور حول خاصية من خصائص النموذج

Form

وهى حاصية

Opacity

وايضا خاصية اخرى وهى

TransparencyKey

والخاصيتين تتعلقان بطريقة عرض النموذج والحقيقة انهم عجبونى جدا جدا واتمنى انهم يعجبوكم انتو كمان الاولى كما هو واضح من اسمها تتعلق بشفافية النموذج .

يعنى بامكانك انك تقلل شفافية النموذج مما يعطيك شكل ممتاز قد تحتاجه فى بعض البرامج

حيث تزداد شفافية النموذج حتى يبدا ما تحتها من نوافذ فى الظهور.

يمكنك ان تجرب ذلك بمنتهى البساطة افتح مشروع جديد وغير لون خليفة النموذج الى اى لون تريده وغير الاتى

this.Opacity=.7;

شغل البرنامج وسترى ان النموذج قد ذادت شفافيته واصبح يظهر ما تحته من نوافذ واكواد.

كما تلرى ان خاصية الشفافية تاخذ قيمة رقيمة ما بين ال 0 وال 1

والقيمة الافتراضية لهذه الخاصية 1 وفيها يكون النموذج غير شفاف نهائيا.

اما عندما تاخد هذه الخاصية القيمة 0 فان النموذج يصبح غير مرئى مع

ملاحظة انه غير مرئى نعم ولكن موجود ومنفذ وهو النافذة النشطة فعلا.

اما اذا جئت للخاصية

TransparencyKey

لها شكل عام كالتالى

this.TransparencyKey = Color.Red;

هذه الخاصية تمحو الجزء الذى ياخد هذا اللون من النموذج محو تام ليظهر ما خلفه تماما وكانه غير موجود ولا يظهر من النموذج سوى الاطار الخارجى فقط.

هذه الخاصية ليست فقط تمحو الجزء الذى ياخذ هذا اللون فقط ولكنها تجعله غير موجود فعلا - وهذا بعكس الخاصية السابقة - فعندما تضغط بالماوس على الجزء الممحى من النموذج فالحدث يقع على النافذة التى تقع اسفله.

هذه الخاصية تعطى شكل رائع فعلا - هذا من وجهة نظرى - يمكن ان تستخدمها فى اى برنامج حسب ما ترى على تجعلها النافذة النشطة دائما.

مع ملاحظة ان اية ازرار موضوعة على النموذج تظهر بكل لونها وتستقبل احداث الماوس وغيرها طالما ان لونها مخالف للون المحدد فى الخاصية.

هذا عن هذه الخصائص وانا عندما كنت اعد الدرس لم يكن هذا هو كل ما ريد ان اعرضه بالضبط بل احببت ان القى بعض الضوء على موضوع هام وهو:-

Subclassing

ومعانها ان انشى كلاس جديدة تعتمد على كلاس موجودة ترث الكلاس الجديدة كل ما للكلاس القديمةوما عليها واضافة على ذلك بعض الوظائف والخصائص الجديدة.

فنحن باذن سنتمرن على هذا الموضوع حيث سنبنى نموذج يرث كل الكلاس

System.Windows.Forms.Form

وسنضيف اليها بعض التاثيرات كمثلا ان تتلاشى الشاشة تدريجيا عند اغلاقها وتعرض تدريجيا.

Fade in and fade Out

وسنقوم بعمل ما يسمى قالب

Template

لنقوم باستدامه وقتما نشاء واينما نشاء وذلك باستخدام

Subclassing

بالامكان ان تضيف للقالب اية اعدادات تريدها ان تصبح كقييم افتراضية تطبق بمجرد ان تنشىء النموذج كان نضع خلفية مثلا او لون معين فى الخليفة وكذلك اذا كنانفضل خط معين وتنسيقه بطريق معينة من حجم ولون وغيرة...

وعندما نستخدم هذا القالب تطبق كل هذه الاعدادت اوتوماتيكا

والا لنبدا وسنتتج هذا القالب فى شكل ملف من النوع

.DLL

نفتح مشروع جديد ونختار مشروع من نوع

Class library

تفتح نافذة المشروع وبها كلاس احذفها فلسنا فى حاجة اليها اضغط عليها بالزر الايمن للماوس واختار حزف وقم باضافة نموذج جديد الى المشروع من قائمة

Project

وسمى هذا النموذج

Standard.cs

افتح نافذة الكود ستجد هذه الجملة التى تجدها فى اول كل نموذج

public class Standard :System.Windows.Forms.Form

وهى تعنى ان هذا النموذج المنشا سيرث هذه الكلاس

قم بضبط اية اعدادت تريدها مثل

Font , Text ,Forecolor , Backcolor

لتطبق هذه الاعدادت كقيم افتراضية عند استخدامك هذا النموذج

وضع اى صورة تريدها فى الخلفية كشعار شركة مثلا او غيرها

والان لنقوم ببرمجة التاثيرات التى سبق واشرنا اليها

بداية ضع مؤقت على النموذج وسمه

formTimer

واجعل

Interval=50

سنضيف الان الدالة التى ستنفذ عند بداية تحميل النموذج وهى التى ستظهره تدريجيا

وليكن اسمها

fadein

هذه الدالة ببساطة ستقوم بزيادة قيمة الخاصية

Opacity

بمقدار

0.1

حتى تصل قيمة الخاصية الى 1 لتكون النافذة ظاهرة تماما.

مع العلم باننا سنجعلها تساوى 0 عند بدء التحميل.

ويكون شكل هذه الدالة كالتالى

  private void fadein(object sender, EventArgs args)

  {

 	 if (this.Opacity <1.0)

 	 {

    this.Opacity +=0.1;

    formTimer.Enabled =true;

 	 }

 	 else

 	 {

    formTimer.Tick -=loading;

 	 }

  

  }

كما ترى ان هذا الكود سينفذ مادامت قيمة الخاصية اقل من 1 وستتكرر كل 50 ملى ثانية (عن طريق الموقت) وخاصية الانترفال حتى تصل الى القيمة 1 فيقف عمل المؤقت.

نحن نريد ان يحدث هذاعند بدء التحميل لذلك سنقوم باضافة هذا الحدث كالتالى

private EventHandler loading;

وذلك فى قمة الكود ثم نضيف الدالة الخاصة بهذا الحدث كالتالى

  protected override void OnLoad(EventArgs e)

  {

 	 base.OnLoad(e);

 	 this.Opacity =0;

 	 loading =new EventHandler(this.fadein);

 	 formTimer.Tick +=loading;

 	 formTimer.Enabled =true;

  }

Overload قمنا هنا بعمل

لهذا الحدث

وهو يجعل قيمة خاصية الشفافية تساوى 0 ثم يفجر هذا الحدث وينفذ الدالة

fadein

fadeout والخطوة التالية هى كتابة الدالة

وهى ستقوم بعكس عمل الدالة السابق تماما

  private void fadeOut(object sender,EventArgs e)

  {

 	 if (this.Opacity >0)

 	 {

    this.Opacity -=0.1;

    formTimer.Enabled =true;

 	 }

 	 else

 	 {

    formTimer.Tick -=closing;

    this.Close();

 	 }

  }

يقوم هذا الكود بنقص مة تلك الخاصية بمقدار0.1 حتى تصل الى 0 وتختفى النافذة ثم يتم اغلاقها.

ثم نضيف حدث الاغلاق كالتالى

private EventHandler closing;

ثم نضيف دالة هذا الحدث كالتالى بعكس الطريق السابقة تماما.

  protected override void OnClosing(CancelEventArgs e)

  {

 	 base.OnClosing(e);

 	 if (this.Opacity >0)

 	 {

    closing =new EventHandler(this.fadeOut);

    formTimer.Tick +=closing;

    formTimer.Enabled =true;

    e.Cancel =true;

 	 }

  }

بهذا نكون قد انتهينا من اعداد هذا القالب قم بنتفيذ المشروع وبالطبع لن تظهر لك اية نوافذ ولكنك ستجد ملف اسمه

ٍStandered.Dll

ستجده فى المجلد

binDebug

والان لنقوم بتجربة هذا القالب فى مثال فلتقم بفتح مشروع جديد من نوع

Windows Application

Form1 ستجد نموذج مضاف باسم

ولتطبيق القالب غلى هذا النموذج اتبع الاتى

Project من قائمة

Add Reference اختار

.NET تاكد ان التبويب النشط هو

Browse اضغط

وحدد الملف المنتج وستجده باسم المشروع فى المجلد

binDebug

Companyform بفرض ان اسم المشروع هو

ستجد ملف

Companyform.DLL

حدده واضغط موافق

افتح نافذة الكود واضف الجملة التالية فى اول الكود

using CompanyForm;

ثم غير الجملة التالية

public class Form1 :System.Windows.Forms.Form

ويتم تغييره ليرث النموذج الحالى النموذج السابق اعداده كالتالى

public class Form1 :Standard

جرب هذا وستجده رائعا ان شاء

ويمكن ان تؤدى نفس العمل ولكن بطريقة اخرى عن طريق

Project >> Add Inherited Form

حدد الملف ونفذ البرنامج وستجده رائعا ان شاء الله

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

بالرغم من بساطته الشديدة الا انه يقدم مثالاعلى استخدام الوارثة فى انشاء كائنات خاصة نضيف

اليها التاثيرات والاعدادت التى نفضلها او المطلوبه لهذا البرنامج مرة واحدة لتنفذ فور انشاء

النموذج الجديد وتطبيق عملية الوراثة.

وهذه الطريقة ممتازة حينما تريد ان تطبق خاصية المراءة مثلا على مشروع يحتوى على

عدد كبير من النماذج فاننا نبرمج المراءة فى نموذج واحد ومعها كل ما نريد من اعدادت فى

نفس النموذج ثم ترث بقية النماذج فى المشروعهذا النموذج وفى ذلك توفيرا كبير للوقت والجهد

وتقليل احتمال الاخطاء فضلا عن الشكل الاحترافى.

امنياتى لكم بالتوفيق

ايمن مصطفى

companyform.zip

#2

السلام و عليكم

أخي لو سمحت ممكن مثال على خاصية المرأه و كيف تطبيقها و ماهي الـ Statement الازم إستخدامها لتنفيد هذا المفهم

و شكرا ألف شكر على المثال السابق بصراحه رائع جدا

قم بزيارة موقعنا الخاص C# Lover ... الموقع الخاص بمحبي لغة الـ #C العرب

http://arab.csharplover.com

#3

اهلا وسهالا اخىا الكريم

انا اسف انى اتاخرت عليك

وان شاء الله قريب هارسل لك مثال على تقنية المراءة

وشكرا

هذا الموضوع مغلق.

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