إقتباس :Allow user to add Rowsهذي لا تفعل الخاصية كما استخدمتها بالكود .
و انما معناها ان رقم السطر الاخير يختلف في حالتين 1-السماح باضافة صف جديد وقت التشغيل 2- عدم السماح.
فلو كان مسموح يكون رقم الاخير = العدد الكلي ناقص 2
ولو غير مسموح يكون رقم الاخير = العدد الكلي ناقص 1
أبشرك حليتها
PHP كود :
Public Class Form1
Private Function gid()
Return dgv.Rows.Count
End Function
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
Randomize()
btnGen.PerformClick()
End Sub
Private Sub btnGen_Click(sender As System.Object, e As System.EventArgs) Handles btnGen.Click
txtbarcode.Text = Int(Rnd() * 999)
End Sub
Private Function GetRowIndex(txt As String) As Integer
For i As Integer = 0 To dgv.Rows.Count - IIf(dgv.AllowUserToAddRows, 2, 1)
Dim row As String = dgv.Rows(i).Cells(1).Value
If row = txt Then
Return i
Exit Function
End If
Next
Return Nothing
End Function
Private Sub txtq_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtq.KeyDown
If e.KeyData = Keys.Enter Then
If dgv.Rows.Count = IIf(dgv.AllowUserToAddRows, 1, 0) Then
Dim row As New DataGridViewRow
row.CreateCells(dgv)
row.Cells(0).Value = gid()
row.Cells(1).Value = txtbarcode.Text
row.Cells(2).Value = txtname.Text
row.Cells(3).Value = txtu.Text
row.Cells(4).Value = txtunitpr.Text
row.Cells(5).Value += Val(txtq.Text)
dgv.Rows.Add(row)
Else
dgv.CurrentCell = dgv.Rows(GetRowIndex(txtbarcode.Text)).Cells(5)
Dim row As String = dgv.CurrentRow.Cells(1).Value
If row = txtbarcode.Text Then
dgv.CurrentRow.Cells(5).Value = Val(dgv.CurrentRow.Cells(5).Value + Val(txtq.Text))
Else
Dim Arow As New DataGridViewRow
Arow.CreateCells(dgv)
Arow.Cells(0).Value = gid()
Arow.Cells(1).Value = txtbarcode.Text
Arow.Cells(2).Value = txtname.Text
Arow.Cells(3).Value = txtu.Text
Arow.Cells(4).Value = txtunitpr.Text
Arow.Cells(5).Value += Val(txtq.Text)
dgv.Rows.Add(Arow)
End If
End If
End If
End Sub
Private Sub dgv_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellValueChanged
On Error Resume Next
dgv.Rows(dgv.CurrentRow.Index).Cells(6).Value = Val(dgv.Rows(dgv.CurrentRow.Index).Cells(4).Value) * Val(dgv.Rows(dgv.CurrentRow.Index).Cells(5).Value)
End Sub
Private Sub dgv_RowsAdded(sender As Object, e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles dgv.RowsAdded
dgv.Rows(e.RowIndex).Cells(6).Value = Val(dgv.Rows(e.RowIndex).Cells(4).Value) * Val(dgv.Rows(e.RowIndex).Cells(5).Value)
End Sub
End Class
المثال بعد التصليح
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير

