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

سلسلة دروس Dot Net Controls

رائج
بدأه Ahmed H. Alawady في 20 أكتوبر 2005 · 47 رد · 20,304 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

هنا سوف يتم إن شاء الله شرح كل ما يتعلق بالأدوات الخاصة بـالدوت نت مع شرحها خاصية خاصية Propery وبطرق إستخدام الأحداث Events وفائدة كل أداه من الأدوات وسوف نمر بالأدوات كما هي بالترتيب الأبجدي للأدوات

وهي كالآتي

Button
  CheckBox
  CheckedListBox
  ColorDialog
  ComboBox
  ContextMenu
  DataGrid
  DateTimePicker
  DomainUpDown
  ErrorProvider
  FontDialog
  GroupBox
  HScrollBar
  ImageList
  Label
  LinkLabel
  ListBox
  ListView
  MainMenu
  NumericUpDown
  OpenFileDialog
  PageSetupDialog
  Panel
  PictureBox
  PrintDialog
  PrintDocument
  PrintPreviewControl
  PrintPreviewDialog
  ProgressBar
  PropertyGrid
  RadioButton
  RichTextBox
  SaveFileDialog
  StatusBar
  TabControl
  TextBox
  Timer
  ToolBar
  ToolTip
  TrackBar
  TreeView
  VScrollBar

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

نسألكم الدعاء بالتوفيق ونسأل الله العون في هذا لما فيه خير الإسلام والمسملون

"يا قوم لا أسألكم عليه من أجر إن أجري إلا على رب العالمين"

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

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

سوف أقوم إن شاء الله بشرح بكل خاصية على حدة في هذه المقالة ، ثم بعد ذلك نبدأ بمقالة لكل أداه من الأدوات مع مثال إن شاء الله

وسوف أقوم بالشرح إن شاء الله بعدم تحديد فئة المتعلم يعني المتقدمين ميزهقوش والمبتدئين ميستعجلوش :D

أولا : الخاصية

اقتباس
AccessibleDescription Property

وهي بالصيغة التالية

public string AccessibleDescription {get; set;}

الفائدة : يقوم بإرسال وإستقبال وصف للأداه المستخدمة

هذه الأداه ليست لها أي فاعلية للمستخدم المباشر للبرنامج ، أي أنها لا تقوم بإظهار أي شئ للمستخدم ( لا تقوم بتغيير اي شئ في الأداه )

يمكنك القول أنها خاصية لتخزين بيانات يمكننا إستخدامها في أماكن أخرى برمجيا

أمثلة للإستخدام : عند وجود مثلا StatusBar Control وتريد عند الوقوف على أي كنترول بالشاشة يتم شرح فائدة الكنترول الحالية في StatusBar فبالطبع نقوم بإرسال الوصف المخزن في الخاصية AccessibleDescription

وبالمثل يمكن التفكير في كيفية إستخدام توصيف الكنترول المستخدم الذي يقف عليه المستخدم

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

وليس من المنطق إستخدامها في زر مكتوب عليه "موافق" لأنه لا يوجد له توصيف

ولكن من المنطق إستخدامها زر يقوم بعرض صورة ذات فائدة معينة ... الخ

طريقة الإستخدام

System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
// هذه هي فائدة إستخدام Set
txt.AccessibleDescription = "هذه الخانة يتم كتابة إسم الشركة باللغة العربية";
وبعد ذلك في وسط البرنامج
// هذه هي فائدة إستخدام Get
string textBox_Desc = txt.AccessibleDescription;

أعلم أن الموضوع سهل جدا ولكن أنا أحببت أن أبدأ من الصفر

ثانيا : الخاصية

اقتباس
AccessibleName Property

وهي بالصيغة التالية

public string AccessibleName {get; set;}

الفائدة : يقوم بإرسال وإستقبال وصف للأداه المستخدمة

وهي خاصية مساعدة مثل الخاصية السابقة

ولكن فائدتها هي إسم وصف للأداه وليس وصف لها ( ملخص لإسم الكنترول )

مثال توضيحي : عندما يكون لديك كنترول يعرض صورة فيمكنك كتابة إسم الخاصية AccessibleName مثلا بكلمة Preview

ويمكنك الإستفادة منها مثلا : بحيث ولنفرض أن هذه الخاصية لكنترول Label وبالطبع بجانب كل Label في الفورم كنترول آخر TextBox فرضا فيمكنك ربط الأثنين ببعض بكتابة إسم كل واحد في الخاصية AccessibleName للكنترول الآخر ثم تستخدم الكود للربط بينهم .

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

طريقة الإستخدام :

System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
// هذه هي فائدة إستخدام Set
txt.AccessibleName = "CompanyName";
txt.AccessibleDescription = "هذه الخانة يتم كتابة إسم الشركة باللغة العربية";
وبعد ذلك في وسط البرنامج
// هذه هي فائدة إستخدام Get
string textBox_Name = txt.AccessibleName;
string textBox_Desc = txt.AccessibleDescription;

تم تعديل هذه المشاركة بواسطة HGB في 15 يوليو 2010 في 00:54

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#2

اخي احمد , اعانك الله وفقك في اكمال الدروس ونحن معك بعون الله

#3

اشكرك اخي احمد وبداية موفقة جدا .. ونحن بإنتظار المزيد

#4

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

شكرا يا أخ أحمد على الهمه والنشاط .. الحقيقه انت والأخ fmo_82 عاملين شغل في المنتدى وجزاكم الله خيرا.

أحببت أن أكمل على كلامك الخاص بالـ Properties الخاصه بالـ Accessibility.

تكميلا على ما قلته فان الـ AccessibleName و الـ AccessibleDescription وبعض الخواص الأخرى المشابهه ... لهم أهميه كبيره لأنه يتم استخدامهم من قبل البرامج والأدوات الخاصه بالـ Accessibility مثل برنامج Microsoft Narrator.

مثلا برنامج الـ Narrator مفيد للمستخدمين ضعفاء النظر جدا أو العمى والذين يودون استخدام الكمبيوتر والتعامل معه.

فبرنامج الـ Narrator الذي ينزل مع الـ Windows يقوم بنطق مايحدث على الشاشه وبالأخص يقوم بنطق تلك الكلمات الموجوده في خاصية AccessibleName وبالاضافه الى غيرها ربما. ( النسخه الموجوده لدى مع Windows Server 2003 لا تنطق الا الموجود في AccessibleName فقط ).

مثلا اذا كان لدينا هنا Form لعمل Login تتكون من 2 TextBoxes لادخال اسم المستخدم وكلمة المرور ويوجد لدينا Button اسمه مثلا OK ... فاذا كان مستخدم البرنامج يعاني من مشاكل في النظر أو أعمى تماما فينبغي عليك اضافة بعض البيانات لتلك الـ Controls حتى يستطيع برنامج الـ Narrator أن ينطقها للمستخدم.

مثلا في الـ Login Form نجعل الـ AccessibleName يحتوي على ::

ourLoginForm.AccessibleName = "Login To ArabTeam Form";

وأيضا الـ TextBoxes ::

txtBoxUserName.AccessibleName = "Your User Name Please";
txtBoxPassword.AccessibleName = "Your Password Please";

وفي الـ Button ::

okButton.AccessibleName="Press this button to login";

فعندما يفتح المستخدم برنامجنا هذا وهو بالفعل مشغل برنامج الـ Narrator ويغير الـ Focus من خلال زرار Tab أو الأسهم ... تجد الـ Narrator ينطق له كل ما كتبناه داخل الـ AccessibleName الخاصه بالـ Control المنشطه ( Got Focus ).

بالنسبه أيضا لـ AccessibleDescription وماشابهها فيتم استخدامها من برامج أخرى من أمثال الـ Narrator.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#5

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

شكرا يا معتز باشا ربنا يجعلة في ميزان حسناتك ، أنا لما قرأت عن شرح لها اخذت بالي من كده بس كان مكتوب للحالات الخاصة "ضعفاء النظر جدا أو العمى"

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

وايوه كده خليك معانا على الخط :D

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#6

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

منتظرين الباقى

#7

جميل جداً

أتمنى لك دوام التوفيق

ani.gif
#8

ثالثا : الخاصية

اقتباس
AccessibleRole Property

وهي بالصيغة التالية

public AccessibleRole AccessibleRole {get; set;}

الفائدة : يقوم بإرسال وإستقبال دور والمرونة التي يؤديها الكنترول للمستخدم ذوي الإحتياج الخاص بالطبع

وهي خاصية مرتبطة بالخاصيتين السابقتين في المهمة لتسهيل البرنامج لذوي الإحتياج الخاص

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

وهي من نوع Enumeration ومن ضمن المجموعة التي تتضمنها (Alert) وهي ميزة فائدتها أنها تقوم بعمل صوت لتنبية المستخدم عن هذا الكنترول

أرجوا من الأخ معتز أيضا توضيحها بشكل أفضل من ذلك ( تدبيسة ياباشا ) ، أصل ده أول مرة أتعرض للخصائص الثلاثة السابقة :D

رابعا : الخاصية

اقتباس
AllowDrop Property

وهي بالصيغة التالية

public virtual bool AllowDrop {get; set;}

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

وبالطبع القيم التي تأخذها هذه الخاصية هي True أو False

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

إن شاء الله بعد الإنتهاء من شرح ما أعاننا الله عليه من الخصائص سوف نقوم بشرح كيفية إستخدام الأحداث لكل خاصية مع الأمثلة .

طريقة الإستخدام :

PictureBox pic = new PictureBox();
pic.AllowDrop = true;
or
bool HasDragDrop = pic.AllowDrop;

خامسا : الخاصية

اقتباس
Anchor Property

وهي بالصيغة التالية

public virtual AnchorStyles Anchor {get; set;}

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

مثال توضيحي :

عند تثبيت المسافة بين الحافة للكنترول مع الحافة للأب من الجهة المحددة ، أي إذا كان كان التحديد من جهة اليمين وكانت المسافة بينه وبين الأب من جهة اليمين X فعند تكبير الكنترول الأب يقوم بتكبير الكنترول المستخدم ليبقى على نفس المسافة بينه وبين الأب من الحافة اليمنى بمقدار X

طريقة الإستخدام :

TextBox txt = new TextBox();
txt.Anchor = System.Windows.Forms.AnchorStyles.Right;
وإن كان الكنترول مثبت في أكثر من حافة
txt.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));

وذلك على أساس أن قيم الخاصية Anchor موجودة في Enum الخاص System.Windows.Forms.AnchorStyles

وهي كالتالي :

System.Windows.Forms.AnchorStyles {Top, Bottom, Left, Right}

22_10_05_05_12_01_1129983121_1.JPG

ثم عند التصغير من جهة اليمين يحدث التالي

22_10_05_05_13_13_1129983193_.JPG

تم تعديل هذه المشاركة بواسطة HGB في 15 يوليو 2010 في 00:56

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#9

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

اخ احمد

جزاك الله خير ويعينك على التكمله إن شاء الله وإن شاء الله فى الفتره دى مجموعه مواضيع متميزه جدا فى القسم اعتقد إن شاء الله لو كملت هيكون افضل منتدى فى الموقع كله إن شاء الله

#10

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

لقد ذكرت في آخر رد أنني كتبت هذه الجملة وهي صحيحة ولكن في حالة واحدة فقط

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

وهذه الحالة عندما يتم عمل تثبيت من جهتين متضادتين أي مثلا من اليمين واليسار ، فعند التصغير من جهة اليمين فإن المسافة من اليمين ثابتة وأيضا اليسار فلذلك يقوم بتصغير حجم الكنترول لكي يترك المسافات ثابتة من الجهتين

فإن لم يتم تثبيتها من الجهتين يتم تحريك الكنترول ولا يتم تصغيرة أو تكبيرة بحيث أنه مثبت من جهة واحدة ( كما هو موضح في الصورة السابقة )

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#11

بالنسبه للخاصيه :

اقتباس
AccessibleRole Property

تكميلا على ماقاله الأخ أحمد وعلى ماقلته حول الخواص الخاصه بالـ Accessibility ... فهذه الخاصيه يمكنك اسناد اليها احدى القيم الموجوده في AccessibleRole enum .... وهذه الخاصيه توصف للمستخدم ذو الاحتياجات الخاصه كيفية التعامل مع الـ Control وكيف يستخدمها ... أى بمعنى انه ان كان هذه الـ Contorl النشطه من نوع Button فان الـ Narrator مثلا يقرأ له الـ Text الموجود في الخاصيه AccessibleName كما ذكرت في السابق بجانب أيضا أن يخبره عن كيفية استعمال الـ Button .. بأن يخبره مثلا أن يضغط على Space.

الخاصيه AccessibleRole دائما تكون = AccessibleRole.Default ولا ينصح تغييرها , فاتركها دائما كما هى Default حتى ينطق الـ Narrator الطريقه الصحيحه عن كيفية الضغط والتعامل مع الـ Controls.

غيرها فقط في بعض الحالات .. منها اذا كنت تريد تشتيت المستخدم ( حرام عليك يا مفتري ) وتريد مثلا أن تجعل الـ Narrator ينطق للمستخدم أن الـ Button يتم الضغط عليه باستخدام الأسهم !!! أو تغيرها اذا كنت من هواة كتابة الكود دائما بطريقه صريحه .. مثلا في الـ Button تكتب ::

okButton.AccessibleRole = AccessibleRole.PushButton;

وفي الـ Form تكتب ::

ourLoginForm.AccessibleRole = AccessibleRole.Window;

أيضا من الحالات التي ينبغي عليك أن تحددها بطريقه صريحه ولا تجعلها Default اذا كنت تقوم بعمل Control خاصه بك ... فمثلا اذا كنت صممت أنت Control جديده مشابهه للـ ComboBox فكيف للدوت نت أن تعلم كيفية استخدام أداتك اذا قمت بعمل AccessibleRole.Default لها ؟

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

yourUserControl.AccessibleRole = AccessibleRole.ComboBox;

أو على حسب كيفية استخدام أداتك .. وتصفح AccessibleRole enum جيدا بعد عمل الـ Control الخاصه بك أو عند استخدامك لأداه خارجيه غير موجوده في الدوت نت حتى تعطي AccessibleRole مناسبه.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#12

جزاك الله خيرا ياباشا ، أفدت وابدعت بعون من الله عز وجل

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#13

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

أنا أعتذر عن التأخير بسبب أن الإنترنت ADSL كان فاصل ولكن سوف أبدأ اليوم أو غدا إن شاء الله في تكملة الموضوع يوميا

إن شاء الله

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#14

انقطعت عنا فترة طويلة اخي احمد :rolleyes: لكن لامشكلة بما انك بصحة جيدة والحمدلله ;) .. نحن بنتظار دروسك الرائعة :rolleyes:

#15

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

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

أما بعد

سادسا : بالنسبه للخاصيه :

اقتباس
Dock Property

وهي بالصيغة التالية

public virtual DockStyle Dock {get; set;}

الفائدة :

تقوم الخاصية بإرسال وإستقبال أي الحدود الخاصة بالكنترول الأب ( مثال : إذا كان لدينا TextBox بداخل Form أو بداخل GroupBox فكلا من Form أو GroupBox يقال له كنترول الأب ) ليقوم بتثبيتها على حدود الكنترول .

مثال توضيحي :

إذا كان لدينا TextBox موجود بداخل Form لنقوم بإنشاء مثلا برنامج Notbad نلاحظ أن TextBox مثبتة أركانة مع أركان Form السفلى من جهة اليمين واليسار أيضا وبالمثل من أعلى اليمين واليسار ، وإذا قمنا بتمديد (تكبير) Form يقوم TextBox بالتمديد معة وبالعكس في حالة التقلص للـ Form .

وهو بخلاف الخاصية Anchor بحيث أن الخاصية Dock يأخذ بعد X والبعد Y للفورم ثم ينسخها للكنترول TextBox أي أنهما متتطابقين في البعد ، أما بالنسبة للخاصية Anchor فإنها تترك المبرمج يترك مسافة ثابتة بين الحافتين TextBox و Form .

يوجد في الخاصية Dock خمسة إختيارات للتثبيت :

1- تثبيت من جهة اليمين

2- تثبيت من جهة اليسار

3- تثبيت من جهة الأعلى

4- تثبيت من جهة الأسفل

5- تثبيت عن طريق الملئ

بالنسبة لجهة اليمين : فهو يقوم بتثبيت الكنترول في زاويتي الكنترول الأب من (الركن أعلى اليمين ، الركن أسفل اليمين)

بالنسبة لجهة اليسار : فهو يقوم بتثبيت الكنترول في زاويتي الكنترول الأب من (الركن أعلى اليسار ، الركن أسفل اليسار)

بالنسبة لجهة الاعلى : فهو يقوم بتثبيت الكنترول في زاويتي الكنترول الأب من (الركن أعلى اليمين ، الركن أعلى اليسار)

بالنسبة لجهة الأسفل : فهو يقوم بتثبيت الكنترول في زاويتي الكنترول الأب من (الركن أسفل اليمين ، الركن أسفل اليسار)

بالنسبة للملئ : فهو يقوم بتثبيت الكنترول في زاويتي الكنترول الأب من جميع الأركان

مثال لجهة الأسفل ( StatusBar ) ، وللأعلى ( ToolBar أو Taskbar الخاص بالويندوز )

طريقة الإستخدام :

الخاصية تأخذ قيمها من Enum الخاصة بـ DockStyle

DockStyle { None, Left, Right, Top, Buttom, Fill }

أما بالنسبة لطريقة إستقبال القيمة

my_TextBox.Dock = DockStyle.Left;

الصورة المرفقة بها شكل فورم وبها صورة مثبتة من الأعلى DockStyle.Top

والأخرى StatusBar مثبتة من الأسفل DockStyle.Botton

untitled.bmp

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#16

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

سابعا : بالنسبه للخاصيه :

اقتباس
BackColor Property

وهي بالصيغة التالية

public virtual Color BackColor {get; set;}

الفائدة :

يقوم بإرسال وإستقبال لون الأرضية للكنترول

مثال توضيحي :

عند إستخدام أداه مثل GroupBox ونريد أن نجعل له أرضية بلون أزرق مثلا ، وبالطبع عندما نريد نفس الفكرة لأرضية الفورم Form

طريقة الإستخدام :

عند إرسال قيمة اللون

myControlName.BackColor = System.Drawing.SystemColors.ControlLightLight;

وعند إستقبال اللون من الكنترول

System.Drawing.Color myColor = myControlName.BackColor;

ويمكن إرسال اللون بأكثر من طريقة :

1- System Colors ويمكن إستخدام الألوان الخاصة بها في Enum الخاص بـ System.Drawing.SystemColors

 = System.Drawing.SystemColors.ControlLightLight;

10_11_05_03_35_56_1131665756BackColor_1.JPG

2- يمكن أعطاءة رقم اللون المكون من ثلاثة ألوان رئيسية ( أحمر ، أخضر ، أزرق )

 = System.Drawing.Color.FromArgb(((System.Byte)(241)), ((System.Byte)(246)), ((System.Byte)(255)))

10_11_05_03_36_58_1131665818BackColor_.JPG

3- Colors ويمكن إستخدام الألوان الخاصة بها في Enum الخاص بـ Colors

 = System.Drawing.Color.Black;

ملحوظة مهمة : أن BackColor لا يستقبل اللون الشفاف Transparent إذا كان الخاصية ControlStyles.SupportsTransparentBackColor للكنترول قيمتها False

والكنترول في الأغلب يأخذ لون الأرضية الخاصة بالكنترول الأب ، فمثلا إن كان أرضية الفورم لونها أحمر فإن الكنترول يأخذ نفس الأرضية

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#17

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

ثامنا : بالنسبه للخاصيه :

اقتباس
ForeColor Property

وهي بالصيغة التالية

public virtual Color ForeColor {get; set;}

الفائدة :

يقوم بإرسال وإستقبال لون خط الكتابة الموجود بداخل الكنترول

مثال توضيحي :

عند إستخدام أداه مثل TextBox ونريد أن نجعل لون الكتابة بداخلة حمراء مثلا أو بأي لون آخر

طريقة الإستخدام :

عند إرسال قيمة اللون

myControlName.ForeColor = System.Drawing.SystemColors.ControlLightLight;

وعند إستقبال اللون من الكنترول

System.Drawing.Color myColor = myControlName.ForeColor;

ويمكن إرسال اللون بأكثر من طريقة :

1- System Colors ويمكن إستخدام الألوان الخاصة بها في Enum الخاص بـ System.Drawing.SystemColors

 = System.Drawing.SystemColors.ControlLightLight;

2- يمكن أعطاءة رقم اللون المكون من ثلاثة ألوان رئيسية ( أحمر ، أخضر ، أزرق )

 = System.Drawing.Color.FromArgb(((System.Byte)(241)), ((System.Byte)(246)), ((System.Byte)(255)))

3- Colors ويمكن إستخدام الألوان الخاصة بها في Enum الخاص بـ Colors

 = System.Drawing.Color.Black;

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

ثامنا : بالنسبه للخاصيه :

اقتباس
Enabled Property

وهي بالصيغة التالية

public bool Enabled {get; set;}

الفائدة :

يقوم بإستقبال وإرسال قيمة فعالية الكنترول إما True أو False ، وهو مدى إستجابة الكنترول للمستخدم

مثال توضيحي :

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

وإن كانت القيمة الخاصة بها False يعني أن الكنترول ليس مسموح للمستخدم إستخدامة

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

وبالطبع العكس صحيح

طريقة الإستخدام :

myControl.Enabled = false;

وأيضا لمعرفة إن كان فعال أم لا

if( myControl.Enabled == false )

أو بالمثل للمثال السابق

if( !myControl.Enabled )

ملحوظة هامة : إذا كانت فعالية الكنترول الأب مثل GroupBox مقفولة (false) يتم قفل وعدم فعالية جميع الكنترولس الموجودة بداخلة

عدم فعالية الكنترول (false) يقوم بعمل إغلاق (عدم تفعيل) لجميع الأحداث الخاصة بالكنترول ، أي إذا كان الكنترول Button وأوقفنا فعاليتة لا يقوم بتفعيل الحدث الخاصة بالضغط عليه OnClick

انتهى

تم تعديل هذه المشاركة بواسطة HGB في 15 يوليو 2010 في 00:57

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#18

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

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

أي هل سوف يستفيد منه المبتدئين أم به قصور وضعف في جوانب معينة ، نريد تحسين مواضيع الدروس في المنتدى لأنها واجهة المنتدى .

أرجوا الإفادة على البريد الخاص فقط .

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

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#19

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

أحلى حاجة ولا ردود ولا رسائل خاصة :rolleyes:

هل أفهم أن الأسلوب سوف يستفيد منه المبتدئين ( أنا لا أريد جواب من الأعضاء المتميزين بالمنتدى لأن آرائهم فقط للتشجيع )

أنا أريد المبتدئين الذين يريدون الإستفادة من هذا الموضوع

وعلى كل حال أنا برده مش هزهق ( والسكوت علامة الرضا ) :D

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#20

جزاك الله خيرا اخي احمد والله ان دروسك رائعة وانا اقولها لك وبثقة اني استفدت منها كثيرا .. اكمل ولا تيأس من قلة الردود فأنا اعاني مما تعاني منه ايضا

لكن لا يأس مع الحياة ولاحياة مع اليأس :)

#21

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

عاشرا : بالنسبه للخاصيه :

اقتباس
Font Property

وهي بالصيغة التالية

public virtual Font Font {get; set;}

الفائدة :

تقوم بإرسال (Get) وإستقبال(Set) كلاس Class من نوع Font ، وذلك لعرض نوع الخط للكلمة المعروضة

مثال توضيحي :

إذا كان لدينا فرضا TextBox وبه كلمة نريد أن نجعل لها حجم خط معين ونوع خط معين ، ومن الممكن أن نجعلة عريض أو مائل ... الخ

وكذلك بقية Controls التي تحتوي على الخاصية نفسها Font

أما بالنسبة للون الخط فهو في الخاصة التالية المسمى ForeColor وسوف نقوم بشرحها إن شاء الله

والقيمة الأفتراضية لهذه القيمة للخاصية هي DefaultFont هو نوع خط إفتراضي في حالة عدم تغيير نوع الخط

وهذه الخاصية أيضا تقوم بأخذ نفس قيمة الخاصية Font للكنترول الأب (Parent Control)

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

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

طريقة الإستخدام :

ونقوم بإنشاء متغير حرفي string لتعريف نوع الخط

string _FontName = "Kartika";

ثم نقوم بإنشاء متغير كسري Float لتغير حجم الخط

float _FontSize = 15F;

ثم نقوم بإنشاء متغير Style لتحديد شكل الخط (عريض - مائل - تحته خط)

وفي الحالية التالية نقوم بإختيار النوع عريض ومائل في نفس الوقت

System.Drawing.FontStyle _FontStyle = ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)));

myTextBox.Font = new System.Drawing.Font(_FontName, _FontSize, _FontStyle);

15_11_05_06_37_28_1132065448Font_.JPG

وفي حالة إذا أردنا إعادة نوع الخط إلى النوع الإفتراضي DefaultFont

نقوم بذلك

myTextBox.Font = TextBox.DefaultFont;

حيث أن TextBox هو Class ، أي أن إذا كان لدينا الكنترول MyButton يكون الكلاس بالطبع Button

15_11_05_06_36_58_1132065418Font1.JPG

انتهى

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

الحادي عاشر : بالنسبه للخاصيه :

اقتباس
Location Property

وهي بالصيغة التالية

public Point Location {get; set;}

الفائدة :

فائدتها إرسال وإستقبال موقع الكنترول (الحد أعلى اليسار Upper Left) بالنسبة للحد الأب للكنترول (أيضا الحد أعلى اليسار)

مثال توضيحي :

عندما يكون لدينا كنترول بداخل Form ونريد أن نضعه في مكان يبعد عن الحد الأعلى للفورم بمقدار 10 وعن الحد الأيسر بمقدار 20

وذلك يفيد في ترتيب وضع الكنترول في الفورم

19_11_05_07_33_31_1132414411Location.JPG

وعندإستخدام Design Mode لا نهتم بهذه الخاصية لأننا نستخدم الماوس في تحريك الكنترول ، ولكن تتضح أهميتها بالضبط عندما لا يقوم الماوس بوضعها في البعاد الصحيحة التي نريدها وأيضا تتضح أهميتها عند إنشاء كنترول بالكود ونريد تحديد مكانة عند عرضة

وأيضا تتضح أهميتها عندما نريد تحريك الكنترول من مكان لآخر فيمكننا زيادة أو نقصان بعد الكنترول

ويحتوي بعد الكنترول على بعدين فقط X ، Y بحيث أن البعد X هو بعد الكنترول من جهة اليسار ، والبعد Y هو بعد الكنترول عن جهة الأعلى.

19_11_05_06_59_33_1132412373Location.JPG

حيث أن الصورة هي عبارة عن بعد حافة الكنترول عن الحافة للكنترول الأب ( نلاحظ أن الكنترول الأب هو GroupBox وليس Formولكن الكنترول الأب للـ GroupBox هو Form هذا في حالة لو كان الكنترول GroupBox لا يحتوية كنترول آخر ).

طريقة الإستخدام :

هذا لإعطائها موضع الكنترول

myControl.Location = new System.Drawing.Point( 10, 30 );

وهذا لمعرفة موضع الكنترول

int x = myControl.Location.X;
int y = myControl.Location.Y

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

الثاني عشر : بالنسبه للخاصيه :

اقتباس
Size Property

وهي بالصيغة التالية

public Size Size {get; set;}

الفائدة :

فائدتها إرسال وإستقبال حجم (طول وعرض ) الكنترول ، وهي من النوع System.Drawing.Size

وهي تحتوي على Width و Height وهما من النوع int

مثال توضيحي :

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

26_11_05_09_49_29_1133027369untitled.JPG

وتوجد أحيانا أوقات نقوم بتكبير وتصغير حجم الفورم Form أثناء عمل البرنامج فنقوم بإستخدام الخاصية هذه .

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

طريقة الإستخدام :

هذا لإعطائها موضع الكنترول

myControl.Size = new Size(75,25);

وهذا لمعرفة موضع الكنترول

int width = myControl.Size.Width;

int height = myControl.Size.Height;

تم تعديل هذه المشاركة بواسطة HGB في 15 يوليو 2010 في 00:58

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#22

جزاك الله خيرا اخي احمد , اقترح عليك وضع مثال توضيحي مع كل درس (سورس كود) وارفاقه حيث يفيد بشكل كبير في ايصال المعلومة ومراجعتها

#23

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

جزاك الله خيرا يا أخ فادي ، جاري التنفيذ إن شاء الله

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#24

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

الثالث عشر : بالنسبة للخاصية :

اقتباس
Text Property

وهي بالصيغة التالية :

public virtual string Text {get; set;}

الفائدة :

هو الإسم أو الجملة المرافق للكنترول وهو بخلاف الخاصية Name ، ويستفاد منها في الكنترول التي تظهر الإسم مثل TextBox ، Button

وغيرها ولكن لم أجد لها أي فائدة في الكنترول الأتية TreeView ، GroupBox لأنهم لا يظهرون الإسم .

مثال توضيحي :

أبسط مثال هو عندما تريد وضع زرين من الكنترول Button ، أحدهما للسؤال عن تنفيذ عملية والآخر لإلغاء التنفيذ فنكتب في الأولى (موافق) والآخر (غير موافق) .

إذا نستنتج من هذه الخاصية أنها هي الإسم أو النص الذي يظهر للمستخدم لهذه الشاشة .

17_12_05_08_56_24_1134881784Ex.JPG

ففي هذه الصورة يتم توضيح المعنى السابق للخاصية لكل من :

1- الفورم نفسها فقيمة الخاصية Text هي "..Ask"

2- الكنترول Label الموجود في وسط الشاشة فقيمة الخاصية Text هي "? Are you sure"

3- الزر Button الموجود بجهة اليسار قيمتها "Cancel"

4- الزر Button الموجود بجهة اليمين قيمتها "Ok"

طريقة الإستخدام :

بما أنها تقوم بإرسال وإستقبال قيمة ( Get & Set )

myControl.Text = "موافق";
OR
string ControlText = myControl.Text;

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

الخامس عشر : بالنسبة للخاصية :

اقتباس
Name Property

وهي بالصيغة التالية :

public string Name {get; set;}

الفائدة :

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

فهو إسم للكلاس الخاص بالكنترول ، فالكنترول TextBox مثلا هو كلاس ولكن كيف نفرق بين أكثر من واحدة يتم إعطاء كل كنترول منها إسم يتم التعامل معه مباشرة .

مثال توضيحي :

من المثال لاسابق الخاص بالخاصية Text ، كنا نتكلم عن زر موافق فيمكن إعطاء إسم للكنترول Button يرمز لهذا الكنترول لكي لا نتوه بين باقي الكنترولز الموجودة ، كما تاه بني إسرائيل 40 سنة :D في سيناء

وبالطبع يمكن أن تقول أخي الحبيب إذا نسمية Ok أنت صحيح ولكن دعنا نقترح إقتراح جميل تخيل إن لديك إثنين من الكنترول أحدهما TextBox والآخر Label بجانبة لتوضيح ماذا سوف يتم كابتة في TextBox مثل هذه الصورة

17_12_05_09_11_31_1134882691Ex.JPG

فهل سوف نكتب إسم TextBox القيمة "Number" وأيضا نكتب للكنترول Label القيمة "Number"

إذا يجب أن نفرق بين إسم كل كنترول بما يناسبة ، فمن هذا نختصر الكنترول كما يلي وبالطبع لك حرية الإختصار

Button بـ btn

TextBox بـ txt

TreeView بـ trv

Label بـ lbl وهكذا ......

إذا من هذا نعود للمثال السابق ونعطي قيمة Button الإسم "btn_Ok" ، والآخر القيمة "btn_Cancel"

طريقة الإستخدام :

بما أنها تقوم بإرسال وإستقبال قيمة ( Get & Set )

myControl.Name = "ctrl_Name";
OR
string ControlName = myControl.Name;

بالنسبة لطلب معرفة إسم الكنترول لإحتياجات كثيرة فمن الممكن طلب إسم الكنترول المرسل تنفيذه

عندما يشترك أكثر من كنترول في حدث واحد مثلا ، ونريد أن نعرف من قام بهذا الحدث (أي كنترول) نقوم بالآتي

إذا كان كل من الكنترول btn_Ok والكنترول btn_Cancel مشتركون في نفس الحدث التالي :

private void Control_Click(object sender, System.EventArgs e)
{
if( ((Button)sender).Name == "btn_Ok" )
// Code here
else if( ((Button)sender).Name == "btn_Cancel" )
// Code here
}

وهنا قد انتهى بحمد الله أشهر الخصائص المشتركة بين جميع الكنترولز ، وسوف أقوبم بإذن الله بعمل مثال يشمل جميع ما سبق إن شاء الله ، أسألكم الدعاء

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

جزاكم الله خيرا على التشجيع ، ولكني لا أعتقد أن الدروس ذات أهمية لدرجة أني أعملهم في ملف PDF أو أي ملف آخر

وأنا أعتذر وأتأسف على التأخر وسامحوا تكاسلي

فهذا هو برنامج يشمل جميع الأوامر السابقة

02_01_06_09_35_35_1136223335Main.JPG

ولو في أي سؤال أنا تحت أمركم .

لقد قمت بحمد الله بالإنتهاء من نسخة PDF الخاصة للدروس السابقة

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

ويعلم الله كم أخذ مني من الوقت لهذا ، فلا تنسوني من صالح دعائكم

وهذا الملف هو إهداء مني بسيط إلى المنتدى الكريم

ولم أتمكن من رفعة إلى المنتدى لتعدية النسبة المسموح بها على المنتدى

فلذلك قمت برفعة على موقع آخر حتى يتكرم أحد المشرفين برفعة إلى المنتدى مع إعطائنا الوصلة المباشرة لذلك

يمكنك الضغط على الصورة التالية لتحميل الملف

ysi_logo_frontpage.jpg

أو مباشرة من على هذه الوصلة

ysi_logo_frontpage.jpg

هام جدا : لا تنسونا من صالح دعائكم :D

Controls_lessons.rar

تم تعديل هذه المشاركة بواسطة HGB في 15 يوليو 2010 في 01:00

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#25

جزاك الله خيرا اخي احمد على هذا الشرح الرائع , اتمنى منك ان تحول هذه الدروس إلى ملف PDF حتى يتسنى للأعضاء تنزيلها والإستفادة منها في اوقات لاحقة ايضا , ولا تنسانا بلأمثلة ايضا :)

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