• ベストアンサー

ファイルの保存を行いたい

Visual Basic 2010で、メールソフトで添付ファイルの保存・削除と同じような動きをするテキストボックス?を作りたいと考えてますがコードが思いつきません。 どなたか教えて頂けないでしょうか? 動作として (1)テキストボックスにドラッグ&ドロップで選択されたファイルを表示。 この時、テキストボックスに表示されているファイルを右クリックで表示から削除も行いたい (2)実行ボタンを押下で、テキストボックスに表示されているファイルを 日付(年月日と時刻)のファイル名でフォルダーを新規作成して保存したい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

tube220701
質問者

お礼

temtecomai2 さん、回答ありがとうございます。 reodesuyo さんの言ってる事はその通りだと思います。 色々ググって、検索結果で途中まで作ったのですが、 上手く行かなくて質問した次第です。 temtecomai2 さんの回答を参考にコードを書かせて頂きました。 やりたい事がほぼ出来ました。 大変助かりました。ありがとうございます。

その他の回答 (1)

  • reodesuyo
  • ベストアンサー率11% (2/18)
回答No.1

入門本を買うか、立ち読みで、必要な知識だけパクる。 基本が、出来てないと、どんだけやっても 時間だけが、過ぎてゆくだけだ。(-_-;)

tube220701
質問者

お礼

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

関連するQ&A

  • 【C#】 リッチテキストボックスについて

    Microsoft Visual Studio .NET 2003で開発中です。 リッチテキストボックスについて2つ質問したいことがあります。 一つ目は、 リッチテキストボックスにテキストファイルをドラッグ&ドロップして、 テキストファイルの内容をリッチテキストボックスに表示させたいのですが、どうすればいいのでしょうか? 二つ目は、 SelectionBulletについてなのですが、これをtrueにしたとき●以外の文字は打たれないのでしょうか? 何か設定があるのでしょうか?? どなたか教えて下さい。

  • VBでファイルの判定

     VBでドラッグドロップやcommondialogなどで読み込まれたファイルの拡張子の判定をしたいのですがどうしたらよいかわかりません。  たとえば、テキストファイルが読み込まれるとテキストボックスに表示、ほかのファイルが読み込まれると違う処理をするというようなことをしたいのですがわからないので教えていただきたいです。

  • ドラッグしたファイルのパスを取得したい

    Windows2000(sp3) VisualBasic6.0(sp5) で開発しています。 テキストボックス付きのあるアプリケーションを作成し、そのアプリのテキストボックス上へ、エクスプローラーからファイルをドラッグ&ドロップすると、そのファイルのフルパスを表示する。 ということをしたいと考えています。 例 コマンドプロンプトに、エクスプローラーからファイルをドラッグ&ドロップすると、そのファイルのパス付きの名称が表示される。 良い方法をご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。

  • テキストファイルとして保存

    テキストボックス内の文字列をテキストファイルとして保存したいのですが。詳しく解説があるサイトやサンプルを紹介していただければ幸いです。 環境 Visual Basic 6.0 Windows 2000

  • ウィンドウに画像を表示するソフトを作っているのですが

    ピクチャーボックスに画像ファイルをドラッグ&ドロップすることで同ピクチャーボックスに画像を表示するソフトを作っているのですが ・実行ファイルに画像をドラッグ&ドロップすると画像を表示する ・既に画像を表示しているウィンドウ(ピクチャーボックス)に画像をドラッグ&ドロップすると、新しいウィンドウを開きそこにドロップされた画像を表示する このような動作をさせるにはどうプログラミングすればよいのでしょうか? Windows VistaでVisual Basic2008を使用しています。 よろしくお願いします。

  • ファイル保存

    Private Sub Command1_Click()   intFileNo = FreeFile   Open "sample_01.csv" For Output As #intFileNo   Print #intFileNo, Text1.Text   Close #intFileNo End Sub このプログラムではテキストボックスに表示されたcsvをファイル名sample_01.csvとして保存できるのですが、 これだとテキストボックスに表示されているのが何でもファイル名がsample_01.csvとなってしまいます>< こうではなくて、テキストボックスに表示されている、『○○○.csv』というのをそのままファイル名として保存したいのです。 sample_01.csvの部分をtext1.textにかえてやったらエラーがでてできませんでした・・・ どなたかご教授お願い致しますm(__)m

  • 「名前をつけてファイルを保存」で保存する:VB.NET

    テキストボックスの内容をテキストファイルに書き込んで保存するプログラムを作っています。 1.指定した場所に指定したファイル名で保存する 2.「名前をつけて保存する」ダイアログを表示する 以上の2つについては分かったのですが、いわゆるメモ帳のようにメニューバーからファイル→名前をつけて保存ダイアログを開き、任意の場所にテキストボックスの内容を書き込んだテキストファイルを作成する方法が分かりません。 分かる方がいらっしゃいましたらご教授下さい。

  • エブリオでのファイル保存の仕方を教えてください

    イベントにおいて、エブリオ(GZ-HM33)で長時間の録画をする予定でしたので、その時までに録画し、SDカードに保存してあった画像を一度パソコンに保存(ドラッグ&ドロップ)し、イベント終了後、パソコンに保存しておいた元のエブリオでの録画ファイルを、エブリオのSDカードにドラッグ&ドロップで戻したところ、「プロパティーを含めずこのファイルをコピーしますか?」というメッセージが表示され、「新しい場所へコピーできないプロパティーを持っています」とも表示されました。 それでもコピーし、エブリオ本体にSDカードを戻したところ、「管理ファイルを更新しています」という表示が出て、戻した録画ファイルはなくなっていました。 どなたか、一度PCに保存したエブリオ撮影ファイルの、エブリオ(SDカード)への戻し方をわかる方はいらっしゃいますか?

  • Access2000でこんなことできますか?

    Access2000でこんなことできますか? Accessのフォーム上にテキストボックスAとテキストボックスBがあるとします。 テキストボックスAには重複のないユニークなID番号のようなものが入っています。 テキストボックスBはハイパーリンク型で、ファイル名をフルパスで保存します。 マイドキュメントなどに保存されているgifをこのフォームにドラッグアンドドロップすることにより以下の事をやりたい。 (1)ドロップしたファイル名を「テキストボックスAのID番号.gif」に変更したい。 (2)テキストボックスBに(1)でリネームした新しいファイル名(フルパス)を格納したい。 (3)ドロップしたファイルのコピーを、他の任意のディレクトリに作成したい。 と、こんなことをやりたいのですが、可能でしょうか? 到底むりのような気がするのですが。。。 もし可能であれば、ぜひやり方を教えてください。よろしくおねがいします。

  • 「名前を付けて保存」で保存されるファイルの拡張子

    ブラウザに、palemoon12をメインで使っています。 他には、ie8、firefox13、その他いろいろ使っています。 ウエッブでページを保存する場合に、ファイルの種類として、主に Webページ、完全 Webページ、HTMLのみ テキストファイル の3種類で保存しています。 palemoonやfirefoxで保存するとき、「ファイルの種類」が何であっても、「ファイル名」のボックスではファイル名にデフォルトで「.htm」が付いてしまっています。 しかしこれは、「テキストファイル」で保存する場合、困ります。 テキストなのに拡張子に「.htm」が付いたファイルを開くと、テキストエディタで開かれますが、改行が全くないベタのテキストなので、大変に読みにくいのです。 そのため、テキストで保存する場合には一々、拡張子の部分を削除してから保存しています。そうすると、ファイル名に「.txt」が付いて保存されますし、元が<br>などで改行されている箇所はちゃんと改行されているのです。 しかし、保存するときに一々ファイル名に付いている拡張子を削除しなければならない、これは面倒です。 palemoonやfirefoxで、保存する「ファイルの種類」がテキストの時に、一々手動で削除しなくても自動的にファイル名に拡張子に「.txt」が付く方法がないでしょうか。 よろしくお願いいたします。 ちなみに、ieでは「ファイルの種類」が何であっても、「ファイル名」のボックスでは拡張子は付きません。しかし、保存されたファイルには、選択した「ファイルの種類」に応じて、「.htm」「.mht」「.txt」など適切な拡張子が付けられていますし、ファイルの中身もそれに応じた体裁になっています。 もう一つちなみに、この点はieがいいのですが、決定的に不便な点があります。 「名前を付けて保存」する場合、 palemoonやfirefoxでは Ctrl+S のショートカットキーが使えます。しかし、ieにはこのような便利なショートカットキーが用意されていない。 どちらも中途半端で、困ります。