تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
خطأ في كود منع تكرار العناصر في DataGridView
#1
السلام عليكم اخوتي
هذا كوند يمنع تكرار اي عنصر في الشبكة 
المشكله ان في حدث  DataGridView1_KeyDown طبيعي شغال
لكن في حدث في حدث DataGridView1_CellEndEdit تظهر رسالة خطاء 
(لم يتم تعيين مرجع كائن لمثيل كائن.) ما مقصود هذه الرسالة و ما هي حلها



كود :
                   Dim ri = From r As DataGridViewRow In DG.Rows Where r.Cells(0).Value.ToString = TextBox1.text Select r.Index
                   If Not ri.Count = 0 Then
                       DG.ClearSelection()
                       DG.Rows(ri(0)).Selected = True
                       DG.FirstDisplayedScrollingRowIndex = ri(0)

                       Return
                   End If
الرد }}
تم الشكر بواسطة: asemshahen5
#2
(20-11-21, 10:37 AM)غدير الصليحي كتب : السلام عليكم اخوتي
هذا كوند يمنع تكرار اي عنصر في الشبكة 
المشكله ان في حدث  DataGridView1_KeyDown طبيعي شغال
لكن في حدث في حدث DataGridView1_CellEndEdit تظهر رسالة خطاء 
(لم يتم تعيين مرجع كائن لمثيل كائن.) ما مقصود هذه الرسالة و ما هي حلها



كود :
                   Dim ri = From r As DataGridViewRow In DG.Rows Where r.Cells(0).Value.ToString = TextBox1.text Select r.Index
                   If Not ri.Count = 0 Then
                       DG.ClearSelection()
                       DG.Rows(ri(0)).Selected = True
                       DG.FirstDisplayedScrollingRowIndex = ri(0)

                       Return
                   End If

عدلي السطر التالي
PHP كود :
Dim ri From r As DataGridViewRow In DG.Rows Where Not r.IsNewRow AndAlso r.Cells(0).Value.ToString TextBox1.Text Select r.Index 
المشكله كانت عندما يحاول يقرا محتوى الخليه في السطر الجديد
الرد }}
تم الشكر بواسطة: غدير الصليحي , asemshahen5
#3
(20-11-21, 11:02 AM)w.osama كتب :
(20-11-21, 10:37 AM)غدير الصليحي كتب : السلام عليكم اخوتي
هذا كوند يمنع تكرار اي عنصر في الشبكة 
المشكله ان في حدث  DataGridView1_KeyDown طبيعي شغال
لكن في حدث في حدث DataGridView1_CellEndEdit تظهر رسالة خطاء 
(لم يتم تعيين مرجع كائن لمثيل كائن.) ما مقصود هذه الرسالة و ما هي حلها



كود :
                   Dim ri = From r As DataGridViewRow In DG.Rows Where r.Cells(0).Value.ToString = TextBox1.text Select r.Index
                   If Not ri.Count = 0 Then
                       DG.ClearSelection()
                       DG.Rows(ri(0)).Selected = True
                       DG.FirstDisplayedScrollingRowIndex = ri(0)

                       Return
                   End If

عدلي السطر التالي
PHP كود :
Dim ri From r As DataGridViewRow In DG.Rows Where Not r.IsNewRow AndAlso r.Cells(0).Value.ToString TextBox1.Text Select r.Index 
المشكله كانت عندما يحاول يقرا محتوى الخليه في السطر الجديد

مشكور اخي 
بس الان اصبح يمنع كل العناصر 
أي عنصر يدخل يمنعه
الرد }}
تم الشكر بواسطة: asemshahen5
#4
لو الراي عندي الغي الاضافة والتعديل من اداة شبيكة البيانات ويكون التحرير [اضافة حذف تعديل] من ادوات أخرى[مربعات نص ادوات تسمية ازرار] وهكذا.

PHP كود :
Public Class Form1

    Private 
Function Gid() As Integer
        Return dg
.Rows.Count IIf(dg.AllowUserToAddRows10)
 
   End Function
 
   Private Sub selt()
 
       txtname.Clear()
 
       txtname.Focus()
 
       txtname.Select()
 
       dg.CurrentCell dg.Rows(Gid() - 1).Cells(0)
 
       dg.Rows(Gid() - 1).Selected False
    End Sub
    Private 
Function Isfound(ByVal txt As String) As Boolean
        For Each row 
As DataGridViewRow In dg.Rows
            If row
.Cells(1).Value txt Then
                Return True
            End 
If
 
       Next
        Return False
    End 
Function
 
   Private Sub btnadd_Click(sender As ObjectAs EventArgsHandles btnadd.Click
        If txtname
.Text.Trim "" Then Beep() : Exit Sub
        If Isfound
(txtname.Text) = False Then
            dg
.Rows.Add(Gid() + 1txtname.Text)
 
           selt()
 
       Else
            Beep
() : selt()
 
       End If
 
   End Sub


End 
Class 


الملفات المرفقة
.zip   BlockDupsInDGV.zip (الحجم : 18.83 ك ب / التحميلات : 10)
الرد }}
تم الشكر بواسطة: asemshahen5 , غدير الصليحي , w.osama
#5
(20-11-21, 08:24 PM)سعود كتب : لو الراي عندي الغي الاضافة والتعديل من اداة شبيكة البيانات ويكون التحرير [اضافة حذف تعديل] من ادوات أخرى[مربعات نص ادوات تسمية ازرار] وهكذا.

PHP كود :
Public Class Form1

    Private 
Function Gid() As Integer
        Return dg
.Rows.Count IIf(dg.AllowUserToAddRows10)
 
   End Function
 
   Private Sub selt()
 
       txtname.Clear()
 
       txtname.Focus()
 
       txtname.Select()
 
       dg.CurrentCell dg.Rows(Gid() - 1).Cells(0)
 
       dg.Rows(Gid() - 1).Selected False
    End Sub
    Private 
Function Isfound(ByVal txt As String) As Boolean
        For Each row 
As DataGridViewRow In dg.Rows
            If row
.Cells(1).Value txt Then
                Return True
            End 
If
 
       Next
        Return False
    End 
Function
 
   Private Sub btnadd_Click(sender As ObjectAs EventArgsHandles btnadd.Click
        If txtname
.Text.Trim "" Then Beep() : Exit Sub
        If Isfound
(txtname.Text) = False Then
            dg
.Rows.Add(Gid() + 1txtname.Text)
 
           selt()
 
       Else
            Beep
() : selt()
 
       End If
 
   End Sub


End 
Class 

مشكور اخي سعود الف شكر لك 
جهودك جبارة و حلولك رائعة
الرد }}
تم الشكر بواسطة: سعود , asemshahen5



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


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