C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 複数のファイルのパスをオープンダイアログを使って取得したい


(過去ログ 41 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■21418 / inTopicNo.1)  複数のファイルのパスをオープンダイアログを使って取得したい
  
□投稿者/ kaoru (1回)-(2008/07/01(Tue) 18:09:32)

分類:[C#] 

初めまして。お世話になります。
WindowsXP Pro SP2でVisual C# 2008 Express Editionを使ってプログラムをしています。

複数のファイルのパスをオープンダイアログを使って取得したいと考えています。
入門ページを参考に、下記のコードでビルドしました。
エラーはなく、ボタンを押すと、オープンダイアログが開きます。
しかし、実行してみて、オープンダイアログを見ると、
(1)タイトルが設定されていないです。「ファイルを開く」となっています。
(2)単独または複数のファイルを選択し、[開く]ボタンを押すと、タイトルが設定されますが、
選択がキャンセルされます。
(3)[キャンセル]ボタンを押すとメッセージボックスが開き(複数選択した場合でもひとつだけのパスが表示され)、
[OK]を押すとアプリケーションじたいが落ちます。
(4)また、ファイル名をコンソールに出力する場合、
  MessageBox.Show(nFileName);
を
  Console.WriteLine(nFileName);
とすればよいのかなと思うのですが、それでよいのでしょうか?
ご教示いただければと思います。よろしくお願いします。

private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
{
 openFileDialog1.Multiselect = true;
 openFileDialog1.Filter = "Image Files (*.jpg)|*.jpg";
 openFileDialog1.Title = "Jpegファイルを選択してください";
 if (openFileDialog1.ShowDialog() == DialogResult.OK)
  {
  foreach (string nFileName in openFileDialog1.FileNames) {
  MessageBox.Show(nFileName);
    }
 openFileDialog1.Dispose();  //これ、ここでいいんですかね?
  }
}

引用返信 編集キー/
■21419 / inTopicNo.2)  Re[1]: 複数のファイルのパスをオープンダイアログを使って取得したい
□投稿者/ シャノン (518回)-(2008/07/01(Tue) 18:21:33)
2008/07/01(Tue) 18:21:44 編集(投稿者)

No21418 (kaoru さん) に返信
> 複数のファイルのパスをオープンダイアログを使って取得したいと考えています。
> 入門ページを参考に、下記のコードでビルドしました。
> エラーはなく、ボタンを押すと、オープンダイアログが開きます。

下記のコードの大部分は、そのボタンの Click イベントに書くべきものです。

> private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
> {
> openFileDialog1.Multiselect = true;
> openFileDialog1.Filter = "Image Files (*.jpg)|*.jpg";
> openFileDialog1.Title = "Jpegファイルを選択してください";
> if (openFileDialog1.ShowDialog() == DialogResult.OK)
> {
> foreach (string nFileName in openFileDialog1.FileNames) {
> MessageBox.Show(nFileName);
> }
> openFileDialog1.Dispose(); //これ、ここでいいんですかね?
> }
> }


> openFileDialog1.Dispose(); //これ、ここでいいんですかね?

ダメです。
フォームデザイナの下のところに張り付いている openFileDialog ならば、フォームが破棄されるときに Dispose されますので、自分でやってはいけません。
引用返信 編集キー/
■21423 / inTopicNo.3)  Re[2]: 複数のファイルのパスをオープンダイアログを使って取得したい
□投稿者/ kaoru (3回)-(2008/07/01(Tue) 18:29:40)
シャノンさん、さっそくありがとうございました。
おっしゃるとおり、Clickイベントに移動したところ、問題なく動作しました。感謝します。ありがとうございます。
(4)ファイル名をコンソールに出力しようと、
MessageBox.Show(nFileName);

Console.WriteLine(nFileName);
にしてみましたが、コンソールは開かなかったです。
コンソールに出したいというか、正確にはファイルにしたいのですが、そちらはどのようにしたらよいでしょう?

No21419 (シャノン さん) に返信
> 2008/07/01(Tue) 18:21:44 編集(投稿者)
>
> ■No21418 (kaoru さん) に返信
>>複数のファイルのパスをオープンダイアログを使って取得したいと考えています。
>>入門ページを参考に、下記のコードでビルドしました。
>>エラーはなく、ボタンを押すと、オープンダイアログが開きます。
>
> 下記のコードの大部分は、そのボタンの Click イベントに書くべきものです。
>
>>private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
>>{
>> openFileDialog1.Multiselect = true;
>> openFileDialog1.Filter = "Image Files (*.jpg)|*.jpg";
>> openFileDialog1.Title = "Jpegファイルを選択してください";
>> if (openFileDialog1.ShowDialog() == DialogResult.OK)
>> {
>> foreach (string nFileName in openFileDialog1.FileNames) {
>> MessageBox.Show(nFileName);
>> }
>> openFileDialog1.Dispose(); //これ、ここでいいんですかね?
>> }
>>}
>
>
>> openFileDialog1.Dispose(); //これ、ここでいいんですかね?
>
> ダメです。
> フォームデザイナの下のところに張り付いている openFileDialog ならば、フォームが破棄されるときに Dispose されますので、自分でやってはいけません。
引用返信 編集キー/
■21424 / inTopicNo.4)  Re[3]: 複数のファイルのパスをオープンダイアログを使って取得したい
□投稿者/ シャノン (519回)-(2008/07/01(Tue) 18:31:29)
No21423 (kaoru さん) に返信
> コンソールに出したいというか、正確にはファイルにしたいのですが、そちらはどのようにしたらよいでしょう?

このあたりを参考にしてみたらどうでしょう。
http://www.atmarkit.co.jp/fdotnet/csharptips/005file/005file.html
引用返信 編集キー/
■21428 / inTopicNo.5)  Re[4]: 複数のファイルのパスをオープンダイアログを使って取得したい
□投稿者/ kaoru (4回)-(2008/07/01(Tue) 19:14:19)
シャノンさん、情報ありがとうございました。
ご示唆いただいたページを見ても、とんと方法は見当がつかなかったのですが、
下記の通りにして、ファイルのパスを取得することができました。
ありがとうございました。感謝します。

//ログファイルのパス
private string logfilePath = System.Windows.Forms.Application.StartupPath + "\\sendphoto.list";

private void selectPhotoButton_Click_1(object sender, EventArgs e)
{
  openFileDialog1.Multiselect = true;
  openFileDialog1.Filter = "Image Files (*.jpg)|*.jpg";
  openFileDialog1.Title = "Jpegファイルを選択してください";
  if (openFileDialog1.ShowDialog() == DialogResult.OK)
  {
    foreach (string nFileName in openFileDialog1.FileNames)
    {
  System.IO.StreamWriter writer = new System.IO.StreamWriter(logfilePath, true, System.Text.Encoding.Default);
  writer.WriteLine(nFileName);
  writer.Close();
    }
  }
}

■No21424 (シャノン さん) に返信
> ■No21423 (kaoru さん) に返信
>>コンソールに出したいというか、正確にはファイルにしたいのですが、そちらはどのようにしたらよいでしょう?
> 
> このあたりを参考にしてみたらどうでしょう。
> http://www.atmarkit.co.jp/fdotnet/csharptips/005file/005file.html

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -