- ベストアンサー
ファイルの保存を行いたい
Visual Basic 2010で、メールソフトで添付ファイルの保存・削除と同じような動きをするテキストボックス?を作りたいと考えてますがコードが思いつきません。 どなたか教えて頂けないでしょうか? 動作として (1)テキストボックスにドラッグ&ドロップで選択されたファイルを表示。 この時、テキストボックスに表示されているファイルを右クリックで表示から削除も行いたい (2)実行ボタンを押下で、テキストボックスに表示されているファイルを 日付(年月日と時刻)のファイル名でフォルダーを新規作成して保存したい。 宜しくお願いします。
- みんなの回答 (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
その他の回答 (1)
- reodesuyo
- ベストアンサー率11% (2/18)
入門本を買うか、立ち読みで、必要な知識だけパクる。 基本が、出来てないと、どんだけやっても 時間だけが、過ぎてゆくだけだ。(-_-;)
お礼
reodesuyo さん、回答ありがとうございます。
お礼
temtecomai2 さん、回答ありがとうございます。 reodesuyo さんの言ってる事はその通りだと思います。 色々ググって、検索結果で途中まで作ったのですが、 上手く行かなくて質問した次第です。 temtecomai2 さんの回答を参考にコードを書かせて頂きました。 やりたい事がほぼ出来ました。 大変助かりました。ありがとうございます。