المشاركات : 95
المواضيع 38
الإنتساب : Jan 2015
السمعة :
12
الشكر: 53
تم شكره 87 مرات في 35 مشاركات
السلام عليكم ورحمة الله وبركاتة
لو سمحتم يا محترفي المنتدى
عايز اعمل خاصية سحب وافلات من داتا جريد فيو الي داتا جريد فيو اخرى
مثلا اسحب صف من الداتا جريد فيو الاولي ثم افلته في الداتا جريد فيو الثانية
وشكرا
إِنْ يَنْصُرْكُمُ اللَّهُ فَلَا غَالِبَ لَكُمْ وَإِنْ يَخْذُلْكُمْ فَمَنْ ذَا الَّذِي يَنْصُرُكُمْ مِنْ بَعْدِهِ وَعَلَى اللَّهِ فَلْيَتَوَكَّلِ الْمُؤْمِنُونَ
لَيْسَ لَهَا مِنْ دُونِ اللَّهِ كَاشِفَةٌ
المشاركات : 1,379
المواضيع 83
الإنتساب : Sep 2012
السمعة :
217
الشكر: 10451
تم شكره 17812 مرات في 844 مشاركات
وعليكم السلام ورحمة الله وبركاته
في الرابط التالي شرح لسحب عمود بأكمله لكن في نفس الاداة
https://msdn.microsoft.com/en-us/library...2147217396
ومن اداة الى اداة اخرى في الرابط التالي
http://stackoverflow.com/questions/92866...-in-vb-net
ولسحب صف بأكمله الاجابة في النشاركة الثانية في الرابط التالي
http://stackoverflow.com/questions/15879...ing-action
ولسحب خلية واحدة فقط انظر هذا الرابط
https://social.msdn.microsoft.com/Forums...=vbgeneral
بالتوفيق
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
المشاركات : 662
المواضيع 39
الإنتساب : Feb 2014
السمعة :
195
الشكر: 1474
تم شكره 1740 مرات في 622 مشاركات
اخي الكريم اعمل مشروع جديد و اضف له اثنين DataGridView
اذهب الى الخاصية AllowDrop و اجعلها True
في بداية النموذج عرف المتعيرات التالية
PHP كود :
Private dragBoxFromMouseDown As Rectangle Private rowIndexFromMouseDown As Integer Private rowIndexOfItemUnderMouseToDrop As Integer
سنحتاج الى معالجة 4 احداث على التوالي (MouseMove,MouseDown,DragOver,DragDrop) لكل اداة على حدا
لذا ارتايت ان اعمل وظيفة مشتركة وفق بارمترات
الوظيفة الاولى
PHP كود :
Private Sub MoseMove(sender As Object, e As MouseEventArgs, ByVal DataGrid As DataGridView) If (e.Button And MouseButtons.Left) = MouseButtons.Left Then If dragBoxFromMouseDown <> Rectangle.Empty AndAlso Not dragBoxFromMouseDown.Contains(e.X, e.Y) Then
Dim dropEffect As DragDropEffects = DataGrid.DoDragDrop(DataGrid.Rows(rowIndexFromMouseDown), DragDropEffects.Move) End If End If
End Sub
الوظيفة الثانية
PHP كود :
Private Sub MoseDown(sender As Object, e As MouseEventArgs, ByVal DataGrid As DataGridView) rowIndexFromMouseDown = DataGrid.HitTest(e.X, e.Y).RowIndex If rowIndexFromMouseDown <> -1 Then Dim dragSize As Size = SystemInformation.DragSize
dragBoxFromMouseDown = New Rectangle(New Point(e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2)), dragSize) Else dragBoxFromMouseDown = Rectangle.Empty End If
End Sub
الوظيفة الثالثة
PHP كود :
Private Sub DrageDrop(sender As Object, e As DragEventArgs, ByVal DragGrid As DataGridView, DropGrid As DataGridView)
Dim clientPoint As Point = DragGrid.PointToClient(New Point(e.X, e.Y))
rowIndexOfItemUnderMouseToDrop = DragGrid.HitTest(clientPoint.X, clientPoint.Y).RowIndex
If e.Effect = DragDropEffects.Move Then Dim rowToMove As DataGridViewRow = TryCast(e.Data.GetData(GetType(DataGridViewRow)), DataGridViewRow) If rowToMove.Index < 0 Then Return End If If rowIndexFromMouseDown < rowIndexOfItemUnderMouseToDrop Then DropGrid.Rows.RemoveAt(rowIndexFromMouseDown) DragGrid.Rows.Insert(rowIndexOfItemUnderMouseToDrop - 1, rowToMove) ElseIf rowIndexFromMouseDown > rowIndexOfItemUnderMouseToDrop Then DropGrid.Rows.RemoveAt(rowIndexFromMouseDown) DragGrid.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove)
End If End If
End Sub
الحدث الرابع و هو مشترك بين الاداتين بدون بارمترات
PHP كود :
Private Sub DataGridView1_DragOver(sender As Object, e As DragEventArgs) Handles DataGridView1.DragOver, DataGridView2.DragOver e.Effect = DragDropEffects.Move End Sub
بعد كتابة الوظائف السابقة نذهب الى الحدث الموافق لكل اداة و نمرر البارميتر المناسب
احداث DataGridView1
PHP كود :
Private Sub DataGridView1_MouseMove(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseMove MoseMove(DataGridView1, e, DataGridView1) End Sub
Private Sub DataGridView1_MouseDown(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseDown MoseDown(DataGridView1, e, DataGridView1) End Sub
Private Sub DataGridView1_DragDrop(sender As Object, e As DragEventArgs) Handles DataGridView1.DragDrop DrageDrop(DataGridView1, e, DataGridView1, DataGridView2)
End Sub
احداث DataGridView2
PHP كود :
Private Sub DataGridView2_MouseMove(sender As Object, e As MouseEventArgs) Handles DataGridView2.MouseMove MoseMove(DataGridView2, e, DataGridView2) End Sub
Private Sub DataGridView2_MouseDown(sender As Object, e As MouseEventArgs) Handles DataGridView2.MouseDown MoseDown(DataGridView2, e, DataGridView2) End Sub
Private Sub DataGridView2_DragDrop(sender As Object, e As DragEventArgs) Handles DataGridView2.DragDrop
DrageDrop(DataGridView2, e, DataGridView2, DataGridView1) End Sub
و عملت هذا الاجراء البسيط لاضافة بعض البيانات الى كلتا الاداتين استدعيه في بداية تحميل النموذج
PHP كود :
Private Sub AddSomeRows()
Dim col1 As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim col2 As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim col3 As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn() Dim col4 As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn()
col1.HeaderText = "Column1" col1.Name = "Column1"
col2.HeaderText = "Column2" col2.Name = "Column2"
col3.HeaderText = "Column3" col3.Name = "Column3"
col4.HeaderText = "Column4" col4.Name = "Column4"
DataGridView1.Columns.AddRange(New DataGridViewColumn() {col1, col2}) DataGridView2.Columns.AddRange(New DataGridViewColumn() {col3, col4})
Dim Data(,) As String = New String(2, 1) {{1, "Alkateb"}, {2, "Abulaeth"}, {3, "Alshaki"}} Dim Data2(,) As String = New String(2, 1) {{1, "Suaud"}, {2, "AboLayla"}, {3, "Alwadi"}}
Dim s As Integer = 0 While s < Data.Length - 3 Dim row1 As DataGridViewRow = DirectCast(DataGridView1.Rows(0).Clone(), DataGridViewRow) Dim row2 As DataGridViewRow = DirectCast(DataGridView2.Rows(0).Clone(), DataGridViewRow)
row1.Cells(0).Value = Data.GetValue(s, 0) row1.Cells(1).Value = Data.GetValue(s, 1) DataGridView1.Rows.Add(row1) ' row2.Cells(0).Value = Data2.GetValue(s, 0) row2.Cells(1).Value = Data2.GetValue(s, 1) DataGridView2.Rows.Add(row2)
s += 1 End While
End Sub
الان شغل النموذج و جرب نقل البيانات بين الاداتين
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
المشاركات : 95
المواضيع 38
الإنتساب : Jan 2015
السمعة :
12
الشكر: 53
تم شكره 87 مرات في 35 مشاركات
شكرا جار التجربة
فهل ممكن مشروع بالاكواد دي اذ ما لم تعمل معي؟
إِنْ يَنْصُرْكُمُ اللَّهُ فَلَا غَالِبَ لَكُمْ وَإِنْ يَخْذُلْكُمْ فَمَنْ ذَا الَّذِي يَنْصُرُكُمْ مِنْ بَعْدِهِ وَعَلَى اللَّهِ فَلْيَتَوَكَّلِ الْمُؤْمِنُونَ
لَيْسَ لَهَا مِنْ دُونِ اللَّهِ كَاشِفَةٌ
|