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

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

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

Re[2]: ダイアログ選択時のエラー処理


(過去ログ 178 を表示中)

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

■102204 / inTopicNo.1)  ダイアログ選択時のエラー処理
  
□投稿者/ tom (1回)-(2023/07/20(Thu) 15:39:18)

分類:[C#] 

Windowsフォームアプリケーション .NET Framework c#

ダイアログでフォルダを開きCSVファイルを選択するのですが
元々開いたままでファイルを選択するとエラーになってしまします
これをメッセージボックスで警告したいのですが
どの様にすればいいでしょうか
試してみたんですがうまくいかないので
宜しくお願い致します


        private void btnOpen_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "CSV Files (*.csv)|*.csv";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;

                    /*
                    //---------------------------------------------

                    if (IsFileInUse(filePath))
                    {
                        MessageBox.Show("選択されたファイルは開いたままです。");
                    }
                    else
                    {
                        ReadCSV(filePath);
                    }

                    //---------------------------------------------
                    */

                ReadCSV(filePath);
            }
        }


引用返信 編集キー/
■102205 / inTopicNo.2)  Re[1]: ダイアログ選択時のエラー処理
□投稿者/ WebSurfer (2751回)-(2023/07/20(Thu) 15:45:59)
No102204 (tom さん) に返信

> if (IsFileInUse(filePath))
> {
> MessageBox.Show("選択されたファイルは開いたままです。");

IsFileInUse と言うのは何でしょう?

自作メソッドで、これが true を返すと「選択されたファイルは開いたまま」と判定されると
いうことで、このメソッドの実装方法を教えてほしいということですか?
引用返信 編集キー/
■102206 / inTopicNo.3)  Re[1]: ダイアログ選択時のエラー処理
□投稿者/ radian (141回)-(2023/07/20(Thu) 15:48:15)
多分、try〜catchで例外処理を行えばいいと思いますが。
エラーが発生しているなら、エラーの詳細も書いてください。

https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/exceptions/exception-handling
https://ufcpp.net/study/csharp/oo_exception.html
引用返信 編集キー/
■102207 / inTopicNo.4)  Re[1]: ダイアログ選択時のエラー処理
□投稿者/ 魔界の仮面弁士 (3673回)-(2023/07/20(Thu) 17:11:35)
2023/07/20(Thu) 17:19:24 編集(投稿者)

No102204 (tom さん) に返信
> 元々開いたままでファイルを選択するとエラーになってしまします
> これをメッセージボックスで警告したいのですが
> どの様にすればいいでしょうか

これで如何でしょう。
ReadCSV メソッドや IsFileInUse メソッドは作成済みという前提です。

// 案1
var openFileDialog = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
openFileDialog.FileOk += (object o, CancelEventArgs args) =>
{
  if (args.Cancel = IsFileInUse(openFileDialog.FileName))
  {
    MessageBox.Show("選択されたファイルは開いたままです。");
  }
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
  ReadCSV(openFileDialog.FileName);
}


// 案2
var openFileDialog = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
openFileDialog.FileOk += (object o, CancelEventArgs args) =>
{
  if (args.Cancel = IsFileInUse(openFileDialog.FileName))
  {
    MessageBox.Show("選択されたファイルは開いたままです。");
  }
  else
  {
    ReadCSV(openFileDialog.FileName);
  }

};
openFileDialog.ShowDialog();
引用返信 編集キー/
■102208 / inTopicNo.5)  Re[1]: ダイアログ選択時のエラー処理
□投稿者/ WebSurfer (2752回)-(2023/07/20(Thu) 22:11:20)
No102204 (tom さん) に返信

IsFileInUse と言うのが自作メソッドで、これが true を返すと「選択されたファイル
は開いたまま」と判定されるということで、このメソッドの実装方法を教えてほしいと
いうことであれば。

「c# ファイル使用中チェック」などをキーワードにググればいろいろ参考になりそうな
記事がヒットするはずです。例えば下記:

C#でファイルがロック中であるかを確認する
https://zenn.dev/kn64872/articles/d263d5d0d5c3c5
引用返信 編集キー/
■102246 / inTopicNo.6)  Re[2]: ダイアログ選択時のエラー処理
□投稿者/ WebSurfer (2763回)-(2023/08/02(Wed) 11:43:23)
質問者さん、無言ですが、多々回答がされているのでそれらに対するフィードバックを
返してください。

役に立った/立たなかったぐらいはすぐに返せるのでは? 役に立たなかったならどこが
ダメだったかを書くとより期待に近い回答が出てくるかも。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -