DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ドロップ&ドラッグ

環境/言語:[VB.NET 2003]
分類:[.NET]

http://dobon.net/vb/dotnet/control/droppedfile.html
リストボックスではなくテキストボックスにパスを取得する方法はどうしたらよいのでしょうか?
こんにちは、じゃんぬねっと です。

■No9878に返信(kenさんの記事)
> http://dobon.net/vb/dotnet/control/droppedfile.html
> リストボックスではなくテキストボックスにパスを取得する方法はどうしたらよいのでしょうか?

えっと、「何が」判らないのでしょうか?
それが私にはわかりません。

リンク先は「答えそのもの」と言っていいほど、十分なサンプルです。
変えるところと言ったら、Array なデータから 1 つ取り出すくらいですよね?
こんにちは中です。

> http://dobon.net/vb/dotnet/control/droppedfile.html
> リストボックスではなくテキストボックスにパスを取得する方法はどうしたらよいのでしょうか?

まずテキストボックスなので、”すべての”は無理ですがそれはいいですね?
テキストボックスに値を表示したり取得したりってのは.Textですよね?

じゃどうすればいいとおもいます?

これでは駄目ですか?


Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'ドラッグされたデータ形式を調べ、ファイルのときはコピーとする
e.Effect = DragDropEffects.Copy
Else
'ファイル以外は受け付けない
e.Effect = DragDropEffects.None
End If
End Sub

Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop
Dim fName As String = _
e.Data.GetData(DataFormats.FileDrop, True)
TextBox2.Text = fName
End Sub
こんにちは、じゃんぬねっと です。

■No9882に返信(kenさんの記事)
DragEnter は丸ごとコピペで OK なので貼る必要はありません。

> これでは駄目ですか?
> Dim fName As String = e.Data.GetData(DataFormats.FileDrop, True)

だめですね。
1 次元変数を変数に入れようとしてますから。

で、↑↑↑これは↑↑↑先の投稿で、私も中さんもそう言ってますよね?
>>Dim fName As String = e.Data.GetData(DataFormats.FileDrop, True)
> > だめですね。
> 1 次元変数を変数に入れようとしてますから。
> > で、↑↑↑これは↑↑↑先の投稿で、私も中さんもそう言ってます。

出来ました。ありがとうございます。
あと
DragEnterは消すとD&Dが出来ませんがなぜでしょうか?
  • 題名: Re[2]: ドロップ&ドラッグ
  • 著者: Danti
  • 日時: 2005/03/17 17:05:26
  • ID: 9887
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
textBox1.Lines = fileName; ではどうでしょうか。
こんにちは、じゃんぬねっと です。

■No9885に返信(kenさんの記事)
> 出来ました。ありがとうございます。

どうすれば出来たのかを書いておくと、掲示板としては糧になりますね。
まあ、一応ということで書いておきます。

    Private Sub TextBox1_DragDrop(...) Handles TextBox1.DragDrop
        Dim nArrayFileName As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop, False), String())

        TextBox1.Text = nArrayFileName(0)
    End Sub

> あと DragEnterは消すとD&Dが出来ませんがなぜでしょうか?

質問する前に、リファレンスくらいは、読むように心がけましょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsDragEventArgsClassEffectTopic.asp

> ----------------------------------------------------------------------
 ドラッグ アンド ドロップ操作のターゲットのドロップ効果を取得または設定します。
> ----------------------------------------------------------------------
> > どうすれば出来たのかを書いておくと、掲示板としては糧になりますね。

すみません。

こう書きました。

For Each fName As String In CType(e.Data.GetData(DataFormats.FileDrop, True), String())
TextBox1.Text = fName
Next
こんにちは、じゃんぬねっと です。

■No9890に返信(kenさんの記事)
> すみません。
> こう書きました。
>
> For Each fName As String In CType(e.Data.GetData(DataFormats.FileDrop, True), String())
> TextBox1.Text = fName
> Next

TextBox1.Text の文字列に、Append していないですね。
つまり、最後の 1 ファイルしか表示されないので、このループは冗長ですね。
1000 個のファイルを選択してドロップすると 1000 回ループしますね。

>>DragEnter は丸ごとコピペで OK なので貼る必要はありません。

文章の意味を勘違いしてました。
いらないと言う意味ではなく、張る必要がないという意味ですか。
スレ汚しすみません。

DOBON.NET | プログラミング道 | プログラミング掲示板