TabControl と RichText とDragDrop

タグの編集
投稿者 N88-Basic  (社会人) 投稿日時 2021/3/21 10:51:47
Winodws 10 Home (64) + Visual Basic 2019 にてアプリを作成しています。
題名の件で以下のような設定をしています。

(1)TabContol に 2つの Tab を利用し、1つのタブに RichText を Full Doc に設定、2つめのタブに 
 WebContol を Full Doc に設定
(2)TabContol に対して、AllowDrop = True と DragEndter と DrageDrop イベントを設定

上記状態でファイルをドラッグすると、RichText には AllowDrop の設定項目が無いので、ファイルのドラッグができません。Form に対して、AllowDrop を設定しても RichText 上ではドラッグが不可(アイコンが  Cursors.No の状態)(AllowDrop の項目が無いかもしれないので当然かもしれません)

一応、WebControl に対しての DragDrop にしていますが、RichText 上で DragDrop を利用する方法があればご教授ください(特に、RichText 側で DragDrop を処理しなくても、RichText 上でもコンテナーなどに対して DragDrop が利用できればありがたい)。

以上、よろしくお願いします。
投稿者 るきお  (社会人) 投稿日時 2021/3/22 08:27:21
プロパティウィンドウには表示されませんが、RichTextBoxにも AllowDrop 等ドラッグ&ドロップ関連の機能は備わっていて、プログラム上は普通に使用できますよ。

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
    RichTextBox1.AllowDrop = True
End Sub
Private Sub RichTextBox1_DragEnter(ByVal sender As ObjectByVal e As System.Windows.Forms.DragEventArgs) Handles RichTextBox1.DragEnter
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.Copy
    End If
End Sub

Private Sub RichTextBox1_DragDrop(ByVal sender As ObjectByVal e As System.Windows.Forms.DragEventArgs) Handles RichTextBox1.DragDrop
    'ドロップされた内容を表示する 
    Dim items() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
    RichTextBox1.Text = items(0)
End Sub

投稿者 N88-BASIC  (社会人) 投稿日時 2021/3/23 18:02:42
るきお さん、ご回答ありがとうございました。

ご案内いただいた内容に従って、コードにて、AllowDrop を True にすることで Drag & Drop が実現できました。
イベント処理も、Form で設定していた Drag & Drop のイベント処理の Handles を RichText にすることで、苦労することなく設定と処理を実現できました。

ネットでは C# の例しかなく、ここで質問させていただきました。
コーディング時にインテリセンス(?)が上手くガイドしてくれて助かりました。

今後ともよろしくお願いします。