VS2005 VBでDatagridviewのセルの内容をドラックしてボタンの上でドロップした後、ボタンの名前がセルの内容にしたいです。参考になるサンプルをご存知でしょうか。


よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/15 19:42:12
  • 終了:2010/07/22 19:45:03

回答(1件)

id:rsc96074 No.1

rsc回答回数4400ベストアンサー獲得回数4042010/07/16 14:29:42

ポイント10pt

 こちらは参考になるでしょうか。Form1にボタンとDataGridViewを設置して、列を2行作って置いて下さい。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Button1へのドロップを受け入れる ※プロパティーで設定してもよい
        Button1.AllowDrop = True

        DataGridView1.ColumnCount = 3
        DataGridView1.RowCount = 3
        DataGridView1.Item(0, 0).Value = "a"
        DataGridView1.Item(0, 1).Value = "b"
        DataGridView1.Item(1, 0).Value = "c"
        DataGridView1.Item(1, 1).Value = "d"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Button1.BackColor = SystemColors.Highlight
        'Button1.BackColor = Color.Gold
        Button1.Text = "abc"
    End Sub

    'DataGridView1でマウスボタンが押された時
    Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
        'マウスの左ボタンだけが押されている時のみドラッグできるようにする
        If e.Button = MouseButtons.Left Then
            'ドラッグの準備
            Dim dgv As DataGridView = CType(sender, DataGridView)

            '指定された(クリックされた)座標位置の情報を取得する
            Dim hti As System.Windows.Forms.DataGridView.HitTestInfo = dgv.HitTest(e.X, e.Y)

            'ドラッグするセルの内容を取得する
            Dim strText As String = dgv.Item(hti.RowIndex, hti.ColumnIndex).Value.ToString()
            'ドラッグ&ドロップ処理を開始する
            dgv.DoDragDrop(strText, DragDropEffects.All)
        End If
    End Sub

    'Button1内にドラッグされた時
    Private Sub Button1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Button1.DragEnter
        'ドラッグされているデータがstring型か調べ、
        'そうであればドロップ効果をCopyにする
        If e.Data.GetDataPresent(GetType(String)) Then
            e.Effect = DragDropEffects.Copy
        Else
            'string型でなければ受け入れない
            e.Effect = DragDropEffects.None
        End If
    End Sub

    'Button1にドロップされたとき
    Private Sub Button1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Button1.DragDrop
        'ドロップされたデータがstring型か調べる
        If e.Data.GetDataPresent(GetType(String)) Then
            'ドロップされたデータ(string型)を取得
            Dim strText As String = CStr(e.Data.GetData(GetType(String)))
            'ドロップされたデータをリストボックスに追加する
            Button1.Text = strText
        End If
    End Sub
End Class

※参考URL

●Drag&Drop(ドラッグ&ドロップ)を行う: .NET Tips: C#, VB.NET ...

http://dobon.net/vb/dotnet/control/draganddrop.html

●ドラッグ アンド ドロップ操作の実行

http://msdn.microsoft.com/ja-jp/library/ms973845.aspx

●DataGridView.HitTestInfo クラス

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.dat...(VS.80).aspx

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません