2017-07-10 16 views
0

データテーブルからデータソースを持つデータを表示するには、msflexgridを使用する2つのフォームがあります。msflexgridを使用して2つのデータテーブル間に行をドラッグアンドドロップする

私は2つのフォームの間に行をドラッグアンドドロップしたいと思います。私はこのトピックを見て編集しましたが、うまくいきません。

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

このエラー:

error

私を助けてください!

+0

こんにちは、スタックオーバーフローへようこそ!あなたが試したことを示すためにいくつかのコードを投稿してください。 –

答えて

0

これは form1 コード形式1私のForm1のです:

Imports C1.Win.C1FlexGrid 

パブリック・クラスは、新しいデータテーブル( "テスト")C1.Win.C1FlexGrid.HitTestInfo =何も

として プライベートdownHitInfoとして プライベートMDTをFRM1
Private Sub frm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    mdt.Columns.Add("EmplCode") 
    mdt.Columns.Add("EmplName") 
    mdt.Rows.Add("", "A") 
    mdt.Rows.Add("", "B") 
    mdt.Rows.Add("", "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 

エンドクラス

このI S形2:フォーム2の Form 2 コード:

Imports C1.Win.C1FlexGrid 

パブリック・クラスがFRM2 プライベートサブfrm2_Load(オブジェクトとして送信者、EventArgsのようe)のFLG2でMyBase.Load ハンドル .DragMode = DragModeEnum.Manual End Subの

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 

エンドクラス

で.DropMode = DropModeEnum.Manual 終了
関連する問題