(22-05-14, 05:10 PM)atefkhalf2004 كتب : يا باشا
عندما اضع سؤال اذن لا اعرف الاجابة
برجاء الاجابة
طيب اسف على الازعاج ....
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
كملت على مثال الاخ vb.net واضفت 2 من stack واحد لل undo والثاني redo:-
جرب الان وشوف :-
PHP كود :
#Region " DataGridViewStacks" Private dataGridViewRedoStack As New Stack(Of Info)() Private dataGridViewUndoStack As New Stack(Of Info)() Public Structure Info ' عدد الأسطر Public rows As Integer ' رقم السطر Public row As Integer ' رقم العمود Public col As Integer ' قيمة الخلية Public val As Object End Structure
Private Sub dataGridView1_CellBeginEdit(sender As Object, e As DataGridViewCellCancelEventArgs) Handles dataGridView1.CellBeginEdit Dim o As New Info() o.rows = dataGridView1.Rows.Count o.row = dataGridView1.CurrentCell.RowIndex o.col = dataGridView1.CurrentCell.ColumnIndex o.val = dataGridView1.CurrentCell.Value dataGridViewUndoStack.Push(o) End Sub
Private Sub DataGridViewDoUndo() If dataGridViewUndoStack.Count > 0 Then Dim newInfo As New Info() newInfo.col = dataGridViewUndoStack.First().col newInfo.row = dataGridViewUndoStack.First().row newInfo.rows = dataGridViewUndoStack.First().rows newInfo.val = dataGridView1.Rows(newInfo.row).Cells(newInfo.col).Value dataGridViewRedoStack.Push(newInfo)
Dim o As New Info() o = dataGridViewUndoStack.Pop() Me.dataGridView1.Rows(o.row).Cells(o.col).Value = o.val Me.dataGridView1.CurrentCell = dataGridView1.Rows(o.row).Cells(o.col) While dataGridView1.Rows.Count > o.rows dataGridView1.Rows.RemoveAt( _ If(dataGridView1.AllowUserToAddRows, dataGridView1.Rows.Count - 2, dataGridView1.Rows.Count - 1)) End While End If End Sub
Private Sub DataGridViewDoRedo() If dataGridViewRedoStack.Count > 0 Then Dim newInfo As New Info() newInfo.col = dataGridViewRedoStack.First().col newInfo.row = dataGridViewRedoStack.First().row newInfo.rows = dataGridViewRedoStack.First().rows newInfo.val = "" dataGridViewUndoStack.Push(newInfo)
Dim o As New Info() o = dataGridViewRedoStack.Pop()
While dataGridView1.Rows.Count < o.rows dataGridView1.NotifyCurrentCellDirty(True) dataGridView1.Rows.Insert(dataGridView1.Rows.Count - 1, 1) End While
Me.dataGridView1.Rows(o.row).Cells(o.col).Value = o.val Me.dataGridView1.CurrentCell = dataGridView1.Rows(o.row).Cells(o.col) End If End Sub #End Region
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click DataGridViewDoUndo() End Sub
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click DataGridViewDoRedo() End Sub