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

نسخة كاملة : مساعدة في datatGridviwe
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
عندي قريد فيها عمود عباره عن زر + بيانات السجل 
لما يضغط على الزر يعرض بياناته في شاشه أخرى

المشكله أن عندما يضغط الزر عرض البيانات ياخذ من 4-5 ثواني والمعالج الله يصلحه يضغط ورى بعض كثير لحد ما يعلق البرنامج ولا فيه حل إلى أن يتقفل البرنامج كامل 
كيف أتجاوز هذه المشكله
ضع مثال ليتم التعديل عليه أو ضع الكود لمعرفة مكان الخطأ فيه
ضع الكود المستخدم
كود :
Dim sRow As DataGridViewRow = DGV.Rows(e.RowIndex)
         

 If e.ColumnIndex = Me.DGV.Columns(0).Index Then

" تنفيذ أمر برمجي
end if

كود :
Dim sRow As DataGridViewRow = DGV.Rows(e.RowIndex)
         

 If e.ColumnIndex = Me.DGV.Columns(0).Index Then

" تنفيذ أمر برمجي
end if
جرب هذا : e.ColumnIndex = 2 .
2 هو رقم عامود الموجود فيه الزر .

كود القيمة المراد عرضها بالمسج بوكس Dim valueXT As String = DataGridView1.Rows(e.RowIndex).Cells(0).Value

كود :
   Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    If e.ColumnIndex = 2 Then
        Dim valueXT As String = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        If valueXT = Nothing Then Exit Sub
        MsgBox(valueXT.ToString)
    Else
        Exit Sub
    End If
End Sub
برائي انته لا تحتاج إلى if

كل اللي تحتاجه عند النقر على الصف ياخذ قيمة Id

ثم يفتح الشاشة الأخرى وبموجب Id تعرض السجلات .

ولجلب قيمة Id :

لنفرض انه في العمود الأول :

في حدث cellmouceclick


كود :
Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick

ضع هذا الكود :

كود :
id = DataGridView1.Item(0, e.RowIndex).Value
Form2.Show


ثم في فورم2 في حدث Load


كود :
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

تكتب استعلام بموجب id (يجب عليك تعريف متغير عام في موديول على مستوى المشروع كامل) هكذا Public id As Integer