首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用msflexgrid在两个datatable之间拖放行

使用msflexgrid在两个datatable之间拖放行
EN

Stack Overflow用户
提问于 2017-07-10 12:13:42
回答 1查看 274关注 0票数 0

我有两个带有msflexgrid的表单来显示来自datatable的数据源的数据。

我想要在两个表单之间拖放行。我看到了这个主题,并进行了编辑,但它不起作用。

Drag data from DG and other controls to another DG in vb.net

此错误:

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2017-07-10 15:09:00

这是我的form1 form1代码表单1:

代码语言:javascript
复制
Imports C1.Win.C1FlexGrid

公有类frm1私有mdt As新DataTable(“测试”)私有downHitInfo As C1.Win.C1FlexGrid.HitTestInfo = Nothing

代码语言:javascript
复制
Private Sub frm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    mdt.Columns.Add("EmplCode")
    mdt.Columns.Add("EmplName")
    mdt.Rows.Add("012345", "A")
    mdt.Rows.Add("012346", "B")
    mdt.Rows.Add("012347", "C")
    flg1.DataSource = mdt
    With flg1
        .DragMode = DragModeEnum.Manual
        .DropMode = DropModeEnum.Manual
    End With
End Sub

Private Sub flg1_MouseDown(sender As Object, e As MouseEventArgs) Handles flg1.MouseDown
    Dim view As C1FlexGrid = CType(sender, C1FlexGrid)
    Dim hitInfo As C1.Win.C1FlexGrid.HitTestInfo = view.HitTest(e.X, e.Y)
    If Not Control.ModifierKeys = Keys.None Then
        Exit Sub
    End If
    If e.Button = MouseButtons.Left Then
        downHitInfo = hitInfo
    End If
End Sub

Private Sub flg1_MouseMove(sender As Object, e As MouseEventArgs) Handles flg1.MouseMove
    Dim view As C1FlexGrid = CType(sender, C1FlexGrid)
    If e.Button = MouseButtons.Left And Not downHitInfo Is Nothing Then
        Dim dragSize As Size = SystemInformation.DragSize
        Dim DragRect As Rectangle = New Rectangle(New Point(Convert.ToInt32(downHitInfo.X - dragSize.Width / 2), _
      Convert.ToInt32(downHitInfo.Y - dragSize.Height / 2)), dragSize)
        If Not DragRect.Contains(New Point(e.X, e.Y)) Then
            'Extract the DataRow
            Dim gridRowView As C1.Win.C1FlexGrid.Row = DirectCast(view.Rows(downHitInfo.Row), C1.Win.C1FlexGrid.Row)
            'Dim rowView As DataRowView = DirectCast(gridRowView.DataBoundItem, DataRowView)
            Dim rowView As DataRowView = DirectCast(gridRowView.DataMap, DataRowView)
            'Raise the DragDrop with the extracted DataRow
            view.DoDragDrop(rowView.Row, DragDropEffects.Move)
            downHitInfo = Nothing
        End If
    End If
End Sub

Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click
    Dim lfrm As New frm2()
    lfrm.Show()
End Sub

结束类

这是表单2:表单2的Form 2代码:

代码语言:javascript
复制
Imports C1.Win.C1FlexGrid

公共类frm2私有子frm2_Load(发送者作为对象,e作为EventArgs)使用flg2 .DragMode = DragModeEnum.Manual .DropMode = DropModeEnum.Manual End With End Sub处理MyBase.Load

代码语言:javascript
复制
Private Sub flg2_DragOver(sender As Object, e As DragEventArgs) Handles flg2.DragOver
    e.Effect = DragDropEffects.Move
End Sub

Private Sub flg2_DragDrop(sender As Object, e As DragEventArgs) Handles flg2.DragDrop
    Dim draggedRow As DataRow = CType(e.Data.GetData(GetType(DataRow)), DataRow)
End Sub

结束类

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45003669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档