[C#.NET] ربط Enum بـ ComboBox واستخدامها بالطريقة الصحيحة - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم امثلة ومشاريع C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=179) +--- الموضوع : [C#.NET] ربط Enum بـ ComboBox واستخدامها بالطريقة الصحيحة (/showthread.php?tid=36346) |
ربط Enum بـ ComboBox واستخدامها بالطريقة الصحيحة - Anas Mahmoud - 09-09-20 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته المثال بلغة VB تقديم: ال Enum كما تعلمون اخواني الكرام هو عبارة عن مجموعة من الثوابت المسماه ، التي تأخذ قيم رقمية تعبر عن هذه الثوابت ، كتعبير عن الحالة مثلا اذا اردنا تخزين حالة الموظف ( 1 = نشط ، 0 = غير نشط ، 2 = مفصول ) مثلا ، فبدلا من كتابة الارقام دون ان تحمل معني نقوم بتعريف Enum به هذه القيم الثابته مسماه حتى يكون استخدامها ذو معنى : كود : enum EmployeeState الان لسنا مضطرين للقلق حول القيم الرقمية لكل حالة ، بدلا من ذلك نكتب سطر له معنى : كود : employee.State = EmployeeState.Active; هذا مجرد تقديم ولتفاصيل اكثر عن الموضوع هذا موضوع وافي وكافي عن ال Enums للاستاذ سيلفر لايت بارك الله فيه تقديم عن الـ ComboBox: في البداية يجب ان اشير الى نقطة هامة ، ال ComboBox شأنها شأن ادوات المجموعات ( ان صح التعبير ) كالـ ListBox و CheckedListbox تقبل عناضر من اي نوع ، وليس نوع نصي String فقط ، في الحقيقة يمكنك اضافة عناصر للComboBox من كلاساتك الخاصة اذا اردت او من الانواع المعرفة مسبقا ، كل ما في الامر انه يجب عليك تحديد الخاصية في هذا النوع التي ستظهر للمستخدم في عناصر الكومبو بوكس DisplayMember والا يقوم هو بعرض ToString من هذه العناصر افتراضيا ، ولكن العناصر بانوعها لازالت موجودة بمعني اذا اضفت لل ComboBox عناصر من نوع Employee مثلا ، وقت بتحديد الخاصية DisplayMember الى "EmployeeName" فانه سيقوم بعرض للمستخدم اسماء الموظفين للعرض فقط ، ولكن كائن الموظف بكامل خصائصه مازال موجود ويمكن استدعائه بشكل طبيعي باستخدام Cast استخدام Enum مع ComboBox: في مثالنا سأقوم بتعريف Enum لفصول السنة الاربعة : كود : public enum Season طيب جميل جدا ، الان ماذا نفعل اذا اردنا ربط ال Enum ب ComboBox ،لنمكن المستخدم من اختيار اخد ثوابت ال Enum ، اي احد فصول السنة ، تبدو كفكرة منطقية اليس كذلك ؟ نريد الحصول على كل عناصر ال Enum في Array مثلا لاضافتها لل ComboBox عن طريق الخاصية DataSource هذه هي وظيفة الطريقة GetValues في الفئة Enum ، تقبل معامل من نوع Type يمثل ال Enum المطلوب ايجاد Array العناصر له نستخدمها كالتالي : في حدث Load : كود : comboBox1.DataSource = Enum.GetValues(typeof(Season)); ممتاز الان لدينا كل عناصر ال Enum في ال ComboBox ، يمكننا الحصول على العنصر المختار من نوع Season عن طريقة ال Casting مثلا في حدث تغير العنصر المختار comboBox1_SelectedIndexChanged سأقوم بالحصول على الفصل المختار وتغير الخلفية بناء على ذلك : كود : private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) يمكن تطبيق هذه الطريقة على Enum معرفة بالفعل مثلا FormBorderStyle التى تحدد شكل الفورم : في حدث Load : كود : comboBox2.DataSource = Enum.GetValues(typeof(FormBorderStyle)); الان في حدث comboBox2_SelectedIndexChanged : كود : private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) [attachment=25633] RE: ربط Enum بـ ComboBox واستخدامها بالطريقة الصحيحة - ba2e44ca9a - 20-11-20 شكرا لك و رحم الله والدك snaptube vidmate word to pdf |