تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
NotifyIcon and ErrorProvider
#1
بسم الله الرحمن الرحيم
(( رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي ))
صدق الله العلي العظيم




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


اقدم لكم اليوم شرحا بسيطا لأداتين من ادوات الVisual Studio وكيفية استخدامهما في برامجنا وما الفائدة التي ترجى من هذه الادوات لتكون برنامجنا شاملا لن اقول لجميع ادوات الفيجوال لكن على الاقل لبعض هذه الادوات لكي نستفيد من استعمالاتها ألقيمة ,لاني لاحظت ان كثير من المبرمجين يغفلون عن هاتين الاداتين في برامجهم ولا يستخدمونها او لا يتطرقون لها اطلاقا لذا من هذا المنطلق كتبت هذا الشرح البسيط حول هاتين الاداتين لكي نعطيها حقها في برامجنا.



بسم الله نبدأ بشرح الادوات

الاداة الاولى : NotifyIcon

تعريف الأداة : هي اداة اشعار تستخدم لإشعار المستخدم (مستخدم البرنامج) لشيء ما سواء كانت لانتهاء او بدء لعملية ما او تستخدم لتنبيه او تحذير المستخدم من خطأ ما. وهذه الاداة هي مناسبة تماما للبرامج التي تتطلب تبليغات (اشعارات) مستمرة حيث توفر اداة الNotifyIcon هذه الوظيفة عن طريق رسائل التنبيه او التحذير على سبيل المثال لتساعد على تكامل البرنامج. هذه كانت بعض الاستعمالات للأداة وهناك استعمالات اخرى سنتطرق لها فيما بعد.


كيفية استخدام الاداة :
1- نضيف الاداة من قائمة الادوات الToolbox الى البرنامج.
2-اظهار الاداة عن طريق دالة ال ShowBalloonTip.

خصائص الاداة : هناك خمسة خصائص مهمة للأداة وهي:

1- Text: لوضع تعليق على الاداة بحيث لو مرر المستخدم الMouse فوق الاداة التي تظهر في الTaskbar ستظهر له التعليق الذي كتبه مصمم البرنامج ف خاصية الText.
2-Icon : لوضع ايقونة لأداة الإشعار وتظهر في الTaskbar.
3-BalloonTipTitle : لوضع عنوان مناسب للBalloon.
4-BallonTipIcon : يستخدم لاختيار ايقونة لعنوان الاشعار و يتضمن ثلاث خيارات:
• Info
• Warning
• Error
5-BalloonTipText : يستخدم لوضع تعليق مناسب تدل على عنوان الاشعار


الان نأتي الى استخدام الاداة برمجيا

لنفترض ان لدينا برنامج يقوم بإخطار المستخدم في حال انتهاء عملية ما حيث تظهر له رسالة في الBalloon الخاص بNotifyIcon (يعلمه) يشعره بان العملية قد انتهت.


كود البرنامج

PHP كود :
1 private void timer1_Tick(object senderEventArgs e
2      
3         if (progressBar1.Value >= progressBar1.Minimum && progressBar1.Value progressBar1.Maximum
4         
5             progressBar1.Value += 5
6         
7         if (progressBar1.Value == progressBar1.Maximum
8         
9              timer1.Stop(); 
10             notifyIcon1.BalloonTipIcon ToolTipIcon.Info
11             notifyIcon1.BalloonTipTitle "المعالجة"
12               notifyIcon1.BalloonTipText "العملية تمت بنجاح"
13             notifyIcon1.ShowBalloonTip(1000); 
14        
15     
16
17       private void button1_Click(object senderEventArgs e
18       
19           timer1.Start();        
20
         

 
شرح الكود

اولا في حدث الClick للButton نقوم ببدء التوقيت وفي حدث الTick للTimer نقوم بعمل شرط ونحصر الValue للProgressbar بين الMinimum and Maximum ثم نقوم بزيادة الValue بمقدار 5 (اختياري),ونقوم بعمل شرط اخر ونرى اذا اصبحت القيمة مساوية لأكبر قيمة للProgressbar نقوم بوقف الTimer و من ثم نقوم بعرض التعليق.

هذه صورة عن البرنامج



كما تلاحظون حال انتهاء العملية ظهرت لنا تعليق في ايقونة الNotify Icon تنبئنا بانتهاء العملية. حيث قمنا باستدعاء الدالة notifyIcon1.ShowBalloonTip لإظهار التعليق ولها اثنين Overloads الاولى تأخذ باراميتر واحد وهي بالملي ثانية تحدد مدة بقاء التعليق والثانية تأخذ اربع باراميترات وهي (time out, tip title, tip text, tip icon) اي من الممكن ان نستغني عن الاسطر 10,11,12,13 بهذا السطر اعلاه ,ويمكن ايضا اسناد العنوان والتعليق والTipIcon بشكل مباشر عن طريق خصائص الاداة على يمين الشاشة.

هنالك استخدام اخر للNotify Icon وهي جعله يؤدي وظيفة الTray Icon وذلك بربط اداة الContext Menu بالNotify Icon عن طريق الخاصية Context menu strip للأداة Notify icon . بحيث لو عملنا RightClick على الايقونة تظهر لنا الContextMenuStrip والخيارات التي كتبها المبرمج.


سوف نقوم بعمل برنامج عندما يقوم المستخدم بتصغير الفورم تختفي ايقونة الفورم من الTaskbar وتظهر الNotifyIcon وعندما يريد ان يظهر الفورم يقوم بعمل RightClick على الNotify Icon تظهر له الContextMenu ويختار Show لكي تظهر له الفورم.

اولا نضيف الادوات اعلاه الى الفورم ونختار ايقونة مناسبة لأداة الاشعار ثم نكتب في الContextMenu Show and Hide
كما في الصورة التالية:



ونكتب هذا الكود

PHP كود :
private void showToolStripMenuItem_Click(object senderEventArgs e
 
       
 
           if (this.WindowState == FormWindowState.Minimized
 
           
 
               this.Show(); 
 
               this.WindowState FormWindowState.Normal
 
           
 
       

 
       private void hideToolStripMenuItem_Click(object senderEventArgs e
 
       
 
           if (this.WindowState == FormWindowState.Normal
 
           
 
               this.Hide(); 
 
               this.WindowState FormWindowState.Minimized
 
           
 
       
private 
void Form1_Resize(object senderEventArgs e
 
       
 
           if (WindowState == FormWindowState.Minimized
 
           
 
               this.ShowInTaskbar false
 
           
 
           else 
            

 
               this.ShowInTaskbar true
 
           
 
       

 
شرح الكود:

اولا في حدث الResize للفورم اذا قام المستخدم بتصغير الفورم وذلك بفحص حالة الفورم وتأخذ ثلاث حالات (Normal, Minimized, Maximized) نقوم بإخفائه من الTaskbar اما اذا عمل العكس نقوم بإظهاره.
وفي حدث الClick للShow نقوم بإظهار الفورم اذا كانت حالة الفورم Minimized ونغير حالة الفورم الى Normal ,اما في حدث الClick للHide نقوم باخفاء الفورم اذا كانت في حالة الNormal ونغير حالة الفورم الى Minimized.

صورة عن البرنامج



كما تلاحظون من الممكن ايضا ان يقوم المستخدم بتصغير الفورم من الTrayIcon ايضا.


-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------



الاداة الثانية : Error Provider

تعريف الأداة : هي اداة تستخدم لإظهار رسالة خطأ للمستخدم تنبئه بحدوث خطأ ومن الممكن ان يستعمل لتنبيه المستخدم الى اكثر من خطأ في آن واحد ,ويجنب المستخدم من رسائل الحوار التي تظهر في حال حدوث الخطأ مثل الMessagebox .

كيفية استخدام الاداة :
1. نضيف الاداة من قائمة الادوات الToolbox الى البرنامج.
2. اظهار الاداة عن طريق دالة ال Set Error.

خصائص الاداة : هنالك ثلاث خصائص مهمة للأداة منها:
1. BlinkStyle : تحدد شكل الومضة (ومضة ايقونة الخطأ اثناء اسناد رسالة الخطأ لها) وتأخذ ثلاثة انواع وهي:
  * BlinkIfDifferentError
  * AlwaysBlink
  * NeverBlink
2. BlinkRate : المدة بالملي ثانية بين ومضة وأخرى.
3. Icon : تحديد ايقونة رسالة الخطأ (هنالك ايقونة افتراضية للأداة).


نأتي الى استخدام الاداة برمجيا

لنفرض ان لدينا واجهة ولوج الى البرنامج يطلب من المستخدم ادخال اسم المستخدم والرقم السري وفي حال اخطأ المستخدم في الادخال تظهر له ايقونة الخطأ الافتراضية وفيه رسالة الخطأ التي تظهر اثناء مرور الMouse فوقها.


كود البرنامج

PHP كود :
private void Okbtn_Click(object senderEventArgs e
 
       
 
           if (usertxt.Text == ""
 
           
 
               errorProvider1.SetError(usertxt"The text is empty"); 
 
           
 
           else if (usertxt.Text != ""
 
           
 
               errorProvider1.Clear(); 
 
               if (usertxt.Text == "sajad"
 
               
 
                   if (passtxt.Text == ""
 
                   
 
                       errorProvider1.SetError(passtxt"The text is empty"); 
 
                   
 
                   else if (passtxt.Text != ""
 
                   
 
                       errorProvider1.Clear(); 
 
                       if (passtxt.Text == "2351988"
 
                       

 
                       
 
                       else 
                        

 
                           errorProvider1.SetError(passtxt"Wrong Password"); 
 
                       
 
                   
 
               
 
               else 
                

 
                   errorProvider1.SetError(usertxt"Wrong Username"); 
 
               
 
           
 
         


شرح الكود

في الكود اعلاه اذا ادخل المستخدم اسما خاطئا او ترك خانة الUsername فارغا فإننا نستدعي دالة الSetError لتنبيه المستخدم بالخطأ (اذا تركه فارغا ينبئه بان الText فارغ اما اذا ادخل اسما خاطئا ينبئه بان الاسم الذي ادخله ليس صحيحا) ,اما اذا كان الاسم صحيحا نستدعي دالة الClear لمسح اشارة (ايقونة) الErrorProvider من على يمين الText ونبدأ بعد ذلك بتدقيق الرقم السري ايضا بنفس الطريقة.

صور عن البرنامج




مثلما تلاحظون في الصورة الاولى قام المستخدم بإدخال خاطئ للاسم فاستخدمنا دالة الSetError لعرض رسالة الخطأ وتأخذ باراميترين الاولى من نوع Control نحدد فيه الControl الحاضن للError او التي نتوقع حدوث خطأ فيه والثانية من نوع String نكتب فيه رسالة الخطأ التي تظهر على الايقونة الافتراضية للErrorProvider عند مرور الMouse فوق الايقونة, ونفس الكلام بالنسبة للصورة الثانية ,كما تلاحظون اختفاء اشارة الخطأ في الصورة الثانية لان الاسم الذي ادخله المستخدم كان صحيحا.

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

والسلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: sendbad100 , ابراهيم ايبو
#2
موضوع جميل اخي

وفقك الله Smile

تم التقييم :d
متغيب قليلاً للدراسة Smile
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#3
انت الاجمل اخي الكريم

شكرا على المرور والتقييمSmile
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#4
بارك الله فيك موضوع قييم
انا استخدم vb طبقت نفس الكود مع حذف الفاصلة المنقوطه
الكود صح ما طلع إي خطأ فيه لاكن يوم أسوي تنفيذ له ما يتنفذ وكأنه الزر فارغ بدون إي كود
مع العلم ان البرنامج لم يظهر في الشريطه بجوار إيقونة الصوت
خلاف عندك فهو ظاهر بجوار إيقونة الصوت
Big Grin
<---------------------------------------------------------------->

الرد }}}
تم الشكر بواسطة:
#5
إشتغل عندي الحمد الله
المشكلة كانت لاني لم أقم بتحديد لها إيقونة للظهور بها
أول ما حددت لها إيقونة ظهرت بجوار الساعة وظهر الرسالة
تسلم أخوي مره أخرى


Big Grin
<---------------------------------------------------------------->

الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#6
السلام عليكم
الحمد لله انك استفدت

شكرا على المرور والتعليق
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#7
السلام عليكم ورحمة الله وبركاته

شكرا لك شرح ممتاز

الله يعطيك العافية

ويجزيك الف خير
الرد }}}
#8
بارك الله فيك موضوع قييم
















Showbox jiofi.local.html tplinklogin
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#9
وفقك الله Smile
Showbox jiofi.local.html tplinklogin
الرد }}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم