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

autocomplete في الــ DataGridView

بدأه abu malk في 8 سبتمبر 2011 · 13 رد · 924 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ممكن حد يفهمني الاسطر دي من الكود ياجماعه

             private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (e.Control is DataGridViewComboBoxEditingControl)
            {
                ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
                ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
                ((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
            } 
        }

وهل يوجد خاصيه في الداتا جريد اسمها dataGridView1_EditingControlShowing

والevent بتاعها اتعمل ازاي ؟

ويعني ايه اكتب كده ((ComboBox)e.Control) انا عارف انها مضغمه في بعضها ياريت حد يسهل الكود وجزاكم الله خير ونفع بكم

#2

dataGridView1_EditingControlShowing

هذا اسم دالة تسجل على انها سوف تقوم بالتعامل مع الحدث EditingControlShowing

لاحظ ان الدالة تاخذ event حدث واوبجكت مرسل لهذا الحدث ، يعني ان الاوبجكت هو الذي ارسل الحدث

اذا رجعت للكود الذي يتم انتاجة اتوماتيكيا في الفورم auto-generated code سوف تجد ان الدالة تم اضافتها كـ delegate

شيئ من هذا القبيل

someObject.EditControlShowing += dataGridView1_EditingControlShowing();

يعني تم اضافة هذه الدالة للتعامل مع هذا الحدث وكل مايحصل هذا الحدث سوف يتم استدعاء هذه الدالة للتعامل مع الحدث

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

طب الevent ده اتعمل ازااي جه منين ؟

#4

يوجد لكل item في السي شارب مجموعه من الاحداث مثلا الزر يوجد له احداث كثيره منها click والكيبورد له ايضا احداث مثل Key Down ، في نافذ الخصائص لكل عنصر الاحداث موجودة تحت التبويب اللي شكل زي البرق ، تجد فيه كل الاحداث الخاصة بالعنصر

وانت بتقوم بتسجيل دالة للتعامل مع كل حدث

الدوال اللي بتقوم بتسجيل الاحداث لازم تاخذ متغيرين واحد اوبجكت اللي هو المرسل ، لاحظ انه Object ومش اي عنصر معين مثل TextBox علشان المرسل يمكن يكون اي Object وبكده نستفيد من تعدد الاشكال Polymorphism

المتغير الثاني هو حدث event بس لاحظ هنا انه DataGridViewEditingControlShowingEventArgs هو بيرث من الevent args وهو كلاس

لو عاوز تخش في الموضوع زيادة بعمق اقرأ عن الdelegates و ازاي بتتعمل

لو عاوز شرح مبسط لموضوع الdelegates ارجع لكتاب head first C# الفصل 11

لو في عدم وضوح في الشرح السابق لو سمحت تقول لي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

انا فاهم بس انا بسئل انا ضغط علي ايه؟؟؟ علشان يدخل ع الايفنت ده يعني البوتن بضغط عليك بيدخل ع الايفنت كليك هنا هضغط علي ايه علشان يدخل ع الايفنت ده؟

#6

تضغط على الداتا جريد فيو ، يعني تضغط على cell والحدث ده فيه two properties الاولى ColumnIndex والثانيه RowIndex وديه تفيدك في معرفه رقم الخليه التي الضغط عليها

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

انا ضفت كلومن للداتا جريد من النوع كومبوبوكس ولما ضغط عليه جابلي دي

   private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

انا عايز لما اضغط يجبلي السطر ده

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

معلش ممكن تورهالي في صوره وجزاك الله خير الجزاء

#8

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

علشان اوضح اكثر

post-244925-030996800 1315487053_thumb.j

المرفقات
Untitled-1.jpg

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#9

جزاك الله خير الجزاء معلش ممكن توضحلي الكود او طريقه ابسط من كده وخصوصا دي

  ((ComboBox)e.Control).

      if (e.Control is DataGridViewComboBoxEditingControl)
            {
                ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
                ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
                ((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
            }
#10

زي ما قلنا انه الحدث هو اوبجكت من النوع DataGridViewEditingControlShowingEventArgs

if (e.Control is DataGridViewComboBoxEditingControl)

هنا بنفحص هل الحدث ده الكنترول بتاعه هو من النوعDataGridViewComboBoxEditingControl

والله اذا كان combobox control اذا

((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;

هاعمل له casting لاني عارف انهDataGridViewComboBoxEditingControl والسبب هو انه e.Control عندنا هو reference to Control ومشكلة Control هي انه ما عندوش الخاصية

DropDownStyle علشان كده انا بعمل casting علشان احول ال reference من Control الى DataGridViewComboBoxEditingControl وبكده اقدر استدعي الخاصية DropDownStyle

ونفس الشيئ لبقية السطور

لاحظ ان لو عملت casting مباشرة من دون ما افحص نوع الريفرينس ممكن يعمل لي exception وديه هي الفائده من الشرط

تم تعديل هذه المشاركة بواسطة mental-driller في 8 سبتمبر 2011 في 17:54

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#11

جزاك الله خيراخي ونفع بك

#12

تصحيح بالاعلى ^

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#13

السلام عليكم

 

اخي انا عضو جديد بلمنتدى وهي اول مشاركه الي ومبتدئ بلغه السي شارب وعندي سؤال اذا سمحت

 

 

بخصوص الاحداث key press و key down

 

كيف يمكنني كتابه الكود اريد عندما اضغط زر على الكيبورد ياخذ هذه القيمه ويضعها في text box يلي انا عامله

 

 

 

وشكرا سلفا

#14

@yazan mallah

الموضوع هنا طرح منذ سنوات ...افتح موضوع جديد وضع سؤالك مع عنوان معبر عنه . :)  ..و لا مانع من وضع رابط للموضوع الجديد هنا .

لا إله إلا الله ... محمد رسول الله

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

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

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