منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : الcombobox أحد حقول الDataGridView
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كيف يمكن بدون كود أن نجعل أحد حقول ال DataGridView عبارة عن قائمة منسدلة مثل الcombobox
أى هل توجد أداة تقوم بذلك
أوكيف يمكن ذلك من خصائص ال DataGridView أو أثناء عمل الجدول بقاعدة البيانات
أنا ان أردت جعل الحقل الخامس مثلآ عبارة عن قائمة منسدلة (ان أردت عمل ذلك باللغة القديمةVB6) فسأضع فى الفورم combobox  وأكتب الأكواد التالية حتى يتم وضعه فى الخلية المضغوط عليها وحتى يكون المكتوب فيه هو نفس المكتوب فيها
وحتى يتم تعديل قيمة هذه الخلية بالجدول طبقآ لما اختاره المستخدم من الcombobox


       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ComboBox1.Text =dg.Columns(5).Name
        ComboBox1.Width = dg.Columns(5).Width
        ComboBox1.Top = dg.Top
        ComboBox1.Height = dg.Rows(0).Height

        Dim Wdth As Single = 0
        For I = 0 To 4
            Wdth = Wdth + dg.Columns(I).Width
        Next I
 ComboBox1.Left = dg.Left + Wdth + 41.5
        ComboBox1.Top = dg.Top + 20.5
        ComboBox1.Text = dg(5, pos).Value
    End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim txt
        Dim pos As Integer
        pos = BindingContext(dt).Position
        txt = ComboBox1.SelectedItem
        dt.Rows(pos).Item(5) = txt
    End Sub

    Private Sub dg_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dg.CellEnter
        Dim pos, POS1
        pos = BindingContext(dt).Position : TextBox2.Text = pos
        If pos >= dt.Rows.Count Then GoTo 10
        POS1 = dg.FirstDisplayedScrollingRowIndex
        ComboBox1.Top = 22 * (pos - POS1) + dg.Top + 21
        ComboBox1.Text = dg(5, pos).Value
10:     pos = pos
    End Sub

هذا باللغة القديمةVB6
أما باللغة المتطورةVB.net فلا بد أن هناك أدوات جديدة أو خصائص جديدة لل DataGridView أو أى طرق أخرى تقوم لنا بعمل ذلك دون هذه الأكواد منا
ولكم ألف شكر
طبعآ الرقمين 4 ، 5 فى كود ال Form1_Load وفى كود الdg_CellEnter  لأنى كما ذكرت فى البداية أردت عمل القائمة المنسدلة عند الحقل الخامس
وطبعآ الأرقام 22 ، 21 ، 41.5 تختلف من DataGridView لأخرى
فأنا وضعت هذه الأرقام عندى لأنى وجدت ارتفاع الصف فى الDataGridView  عندى =22 وارتفاع شريط العناوين فيها =21
والمسافة بين بدايتها وبين أول عمود فيها =41.5 (عرض الشريط الرأسى الموجود فيه السهم)

ولكم ألف شكر
السلام عليكم ورحمة الله وبركاته
اخي الكريم اسلام
انت الان مع صديقك الجديد Vb.net حاول اقفال باب VB6 مؤقتا 
للتعرف على اداة الداتا غرايد والتعامل مع خصائصها بدون اكواد اطلع على هذا الرابط ويمكنك البحث اكثر في النت
https://www.youtube.com/watch?v=RYcn3z7gNvs&t=377s
شكرآ لك
ولكن الشرح بهذا الرابط باللغة الانجليزية
وأنا لا أفهم منها شيئآ (لا أفهم منها الا المصطلحات المستخدمة فى لغة البرمجة)

ولكم ألف شكر
السلام عليكم
اخي اسلام
اولا اليك هذا الرابط باللغة العربية 
https://www.youtube.com/watch?v=gn1_GPkh...&index=288
وأخرا حتى ترتاح من عناء الكثير من الاستفسارات انصحك بمتابعة هذا الكورس من بدايته الى نهايته شرح بالعربي ممتاز
وهو للاخ المهندس احمد الزيني جزاه الله كل الخير
https://www.youtube.com/watch?v=Ifq4ZGWK...4n&index=1
موفق ان شاء الله 
والكل في المنتدى حاضر للمساعدة
بارك الله فيك


ولكم ألف شكر
بعد هذا الدرس الجميل
جعلت الColumnType لهذا الحقل الخامس (الذى هو"رقم الصف") من النوع DataGridViewComboBoxColumn
وجعلت ال DisplayMember بهذا الحقل وجعلت أيضآ ValueMember بهذا الحقل
فوجدته عند عمل الRUN يعرض لى قيم هذا الحقل لجميع سجلات قاعدة البيانات
أى يعرض رقم الصف لجميع الطلاب . مثلآ( 1  2  4  4  5  4  3  2  3  1  5  2  2 )
ولكنى أريده يعرض فقط خمسة قيم يختار منها المستخدم واحدة(أى 1  2  3  4  5)
فحاولت كتابة هذه القيم فى الخاصية ITEMS فلم أستطع(كلما أكتبها وأضغط على OK أجده أزالها وكأنى لم أكتب شيئآ)

فكيف يمكن ذلك ؟

ولكم ألف شكر
كود :
   Dim cmb As New DataGridViewComboBoxColumn()
       cmb.HeaderText = "Select Data"
       cmb.Name = "cmb"
   
       For i As Integer = 1 To 5
           cmb.Items.Add(i)
       Next

       dgv.Columns.Add(cmb)
بارك الله فيك

ولكن هذا الكود يقوم بعمل عمود جديد بعد آخر عمود فى ال[b]DataGridView[/b]
[b]فكيف يمكن وضع هذه الComboBoxColumn عند الحقل الخامس نفسه[/b]

إقتباس :أنا ان أردت جعل الحقل الخامس مثلآ عبارة عن قائمة منسدلة


إقتباس :جعلت الColumnType لهذا الحقل الخامس (الذى هو"رقم الصف") من النوع DataGridViewComboBoxColumn

فكيف يمكن ذلك ؟

ولكم ألف شكر
ارفق المشروع او نسخة مصغرة منه افضل
الصفحات : 1 2