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

درس عمل فورم افتتاحية بال C#

مغلق
بدأه black tooth في 20 سبتمبر 2005 · 15 رد · 5,281 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عمل فورم افتتاحية بالـ C#

هذه الفورم تسمى بالـ Splash screen (كنت أبحث عن هذا المصطلح من زمن.) :)

في هذا الدرس البسيط سنوضح طريقة عمل هذه الفورم

ولكن ما هي الـ splash screen ؟

الـ splash screen بالعربي هي فورم افتتاحية تستخدم لافتتاح البرامج حيث تحتوي على صورة فيها اسم البرنامج . مثال على هذه الفورمات تشاهدونها وقت تشغيل برامج مايكروسوفت اوفيس أو الأكروبات ريدر أو الفوتوشوب.

تعمل هذه الفورم ثواني معدودات ومن ثم تظهر واجهة البرنامج الرئيسي. وفي هذا الدرس البسيط سوف نتعلم طريقة اظهار صورة للبرنامج في هذه الفورم قبل ظهور واجهة البرنامج الرئيسية.

متطلبات الدرس: Visual Studio.NET مركب على الجهاز، تحضير صورة من اختياركم.

والآن نبدأ باسم الله عمل هذه الفورم باستخدام الـ C#.NET .

نشغل VS.NET وثم نختار C# Windows Application ونسمي المشروع SplashScreen.

والآن لنترك هذه الفورم على حدة وثم نضيف فورم أخرى باختيار Project ثم Add Windows Form ونسمي الكلاس باسم Splash.cs.

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

FormBorderStyle = None 
StartPosition = CenterScreen

وجاء وقت العمل مع الصورة ، من نافذة الخصائص PROPERTIES

BackgoundImage = مسار الصورة

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

وسيكون من الرائع لو أن هذه الفورم لا تحتوي على أزرار الأغلاق والتكبير والتصغير أو أن تظهر في الـ task bar . لذلك نختار قيمة الخاصية ShowInTaskbar لتكون false

ونحفظ العمل.

نرجع الآن الى الفورم الأولى Form1 التي تركناها على حدة ونضيف لها سطور معدودة من الكود حتى يتسنى للفورم splash الظهور والعرض كشاشة افتتاحية.

من نافذة الـ Solution explorer اضغط على الزر View code وثم اذهب الى الـ constructor الخاص بالـ Form1 وثم أضف هذه السطور بعد الدالة InitializeComponent()

Thread th = new Thread(new ThreadStart(DoSplash));
Thread.Start();
th.Sleep(3000);
th.Abort();
Thread.Sleep(1000);

هنا قد قمنا بتعريف عنصر من الشعيرة Thread وهذا العنصر يقوم بتشغيل الفورم splash من خلال الدالة DoSplash

السطر الثاني يعطي الأمر ببدء عمل الـ thread

في السطر الثالث نطلب من الفورم الظهور لمدة 3000 مللي ثانية (ثلاثة ثوان).

السطر الرابع: الدالة Abort() (واضح من اسمها) تنهي عمل الفورم splash

أما السطر الخامس فسبب استدعاء الدالة sleep مرة أخرى هو لاعطاء الفرصة للنظام لتحرير الموارد المستخدمة لعرض الفورم splash تمهيداً لانهائها فعلياً من العمل وعرض الفورم الرئيسية للبرنامج Form1.

أما الدالة DoSplash فتعمل كالآتي:

Void DoSplash()
{
Splash sp = new Splash();
sp.ShowDialog();
}

حيث أننا قمنا بتعريف عنصر من الـ CLASS SPLASH ومن ثم عرضه.

الآن نضغط على زر الحفظ Save ونشغل البرنامج ونرى النتيجة.

تحياتي..

11_08_05_01_09_30_1123790970blckTooth.gif
#2

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

جزاك الله خيرا ، الموضوع جميل ومفيد

ننتظر المزيد

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#3

جزاك الله خيرا

حقا موضوع جميل

تعديل بسيط

th.Start();
Thread.Sleep(3000);

تم تعديل هذه المشاركة بواسطة IOException في 21 سبتمبر 2005 في 15:48

#4
black tooth كتب:
أما الدالة DoSplash فتعمل كالآتي:

Void DoSplash()
{
Splash sp = new Splash();
sp.ShowDialog();
}

حيث أننا قمنا بتعريف عنصر من الـ CLASS SPLASH ومن ثم عرضه.

الآن نضغط على زر الحفظ Save ونشغل البرنامج ونرى النتيجة.

تحياتي..

معلش يا جماعة انا عارفة ان السؤال على الموضوع ده متأخر

بس انا لم أقرأه الا الان

انا جربت الكود بس اين اضع هذا الجزء بالظبط وهل هناك اى name spaces غير ال threading تضاف

#5

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

يتم اضافة الكود الخاص بانشاء ال Thread في ال Constructor الخاص بالفورم الرئيسية في البرنامج بعد السطر الخاص بتنفيذ الدالة InitializeComponents

ثم نضيف التعريف الخاص بالدالة DoSplash

يكون الكود كالتالى :

public Form1()
		{
			InitializeComponent();

			Thread th = new Thread(new ThreadStart(DoSplash));
			th.Start();
			Thread.Sleep(3000);
			th.Abort();
			Thread.Sleep(1000);
		}

		void DoSplash()
		{
			frmSplash sp = new frmSplash();
			sp.ShowDialog();
		}

و فوق كل ذي علم عليم

#6

جزاك الله خيرا C# Developer

على التوضيح

#7

موضوع جميييل جدا

شكرا

#8

شكرا جزيلا على الدرس ...

وشرحك روعة مافي أحسن منه ...

جزاك الله ألف خير ...

:D

#9

الله يجزيك الخير أخي ... بالفعل شرح رائع و سلس

ما أريد الاستفسار عنه في السبلاش سكرين

هو كيف نظهر عمليه الـ loading

loading.gif

و مستوى التحميل حين يبدأ من الصفر لغايه 100% ؟؟

وهل من الممكن ان تكون وهميه أم ماذا ؟؟

أرجو التوضيح و بارك الله فيكم

:)

Success Is A Journey Not A Destination

#10

الله يجزيك الخير

أعجبتني الفكرة وسأستخدمها بمشروع التخرج بإذن الله

ودمت بحفظ الله

#11
Jordan كتب:
الله يجزيك الخير أخي ... بالفعل شرح رائع و سلس

ما أريد الاستفسار عنه في السبلاش سكرين

هو كيف نظهر عمليه الـ loading

loading.gif

و مستوى التحميل حين يبدأ من الصفر لغايه 100% ؟؟

وهل من الممكن ان تكون وهميه أم ماذا ؟؟

أرجو التوضيح و بارك الله فيكم

:)

progressBar1.Maximum = 100;
progressBar1.Minimum = 0;

private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value++;
if(progressBar1.Value >= 100) {
// TODO: close splash screen and start main form
}
}

or

private int progValue = 0;
private int progValueDelta = 4;
private int progValueMax = 100;

private void timer2_Tick(object sender, EventArgs e)
{
 progValue += progValueDelta;
 if(progValue >= progValueMax) {
  progValueDelta *= -1;
 } else if(progValue <= 0) {
  prgSignal.Value = 0;
  progValueDelta *= -1;
 }

 progressBar1.Value = progValue;
}

تم تعديل هذه المشاركة بواسطة Moudey في 9 يونيو 2007 في 03:22

1

مواضيع متنوعة

#12

شكراً شكراً أخي مودي ع التوضيح ... بارك الله فيك :)

Success Is A Journey Not A Destination

#13

شكرا اخي على الدرس الرائع والمتميز :)

أكبر موقع عربي لتعليم السي شارب

موسوعة السي شارب

http://www.csharp1.com

#14

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

#15

بارك الله فيكم

والله منم نستفيد

والف شكر يا باشمهندسين

#16

جزاك الله خيرا ......

تم تعديل هذه المشاركة بواسطة Genuis Man في 12 فبراير 2008 في 14:21

banner1.gif

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

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