マンガでよめる痔のこと・薬のこと

Visual Basic 2010で、メールソフトで添付ファイルの保存・削除と同じような動きをするテキストボックス?を作りたいと考えてますがコードが思いつきません。
どなたか教えて頂けないでしょうか?

動作として

(1)テキストボックスにドラッグ&ドロップで選択されたファイルを表示。
この時、テキストボックスに表示されているファイルを右クリックで表示から削除も行いたい

(2)実行ボタンを押下で、テキストボックスに表示されているファイルを
日付(年月日と時刻)のファイル名でフォルダーを新規作成して保存したい。

宜しくお願いします。

A 回答 (2件)

#1 の意見に同意。


Web でだって部分的に検索すればちゃんと出てくる。
それを組み合わせれば十分なものができあがる。
そのようにして拾ってきたものを組み合わせたのが以下のコード。
ただし [右クリック] でメニューが出る云々はこの回答だけでは面倒なので、キーボードの [Delete] キーに変更。
あとテキストボックスよりはリストボックスの方が扱いやすいので勝手にリストボックスに変更した。

これだけ複数の動作を丸投げされた質問なので回答も個々の細かいところは気にしていない。


1. リストボックスの AllowDrop プロパティを True にしてドラッグ & ドロップを受け取れるようにしておく。

2. リストボックスの DragEnter イベントで、「何か」 がドラッグされてきたときの処理を行う。
具体的には、ファイルがドラッグされてきたらコピー印のエフェクトを表示し、それ以外のものがドラッグされてきたら停車禁止のエフェクトを表示させる。
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  e.Effect = DragDropEffects.Copy
Else
  e.Effect = DragDropEffect.None
End Sub

3. リストボックスの DragDrop イベントで、ドロップされたファイル(複数対応)のフルパスをリストボックスに追加する。
Dim filename As String() = CType(e.Data.GetData(DataFormats.FileDrop, False), String())
ListBox1.Items.AddRange(filename)

4. ボタンの Click イベントで、リストボックスに格納されているファイルを別のフォルダーにコピーする。
具体的には現在の日時を名前とするフォルダーを 「指定した場所」 に作成し、その中にファイルをコピーする。
Dim newDirName As String = Now().ToString("yyyyMMdd HHmmss")
Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(System.IO.Path.Combine("E:\hoge", newDirName))
di.Create()

For Each item As String In ListBox1.Items
  Dim filename As String = System.IO.Path.GetFileName(item)
  System.IO.File.Copy(item, System.IO.Path.Combine(di.FullName, filename))
Next

5. リストボックスの KeyDown イベントで、リストボックスでアイテムを選択した状態でキーボードの Delete キーが押された時に選択したファイル名をリストボックスから削除するようにする。
If ListBox1.SelectedIndex = -1 Then
  Exit Sub
End If
If e.KeyCode = Keys.Delete Then
  ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
End If
    • good
    • 0
この回答へのお礼

temtecomai2 さん、回答ありがとうございます。

reodesuyo さんの言ってる事はその通りだと思います。

色々ググって、検索結果で途中まで作ったのですが、
上手く行かなくて質問した次第です。

temtecomai2 さんの回答を参考にコードを書かせて頂きました。
やりたい事がほぼ出来ました。

大変助かりました。ありがとうございます。

お礼日時:2011/12/19 17:20

入門本を買うか、立ち読みで、必要な知識だけパクる。


基本が、出来てないと、どんだけやっても
時間だけが、過ぎてゆくだけだ。(-_-;)
    • good
    • 0
この回答へのお礼

reodesuyo さん、回答ありがとうございます。

お礼日時:2011/12/19 17:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング