Form.Dragイベント内で発生するエラーについて

解決


0で除算しました  2006-02-08 20:37:56  No: 94046

いつもお世話になります

環境 VB.NET 2003 WinXP

Form.Dragイベント内にエラーが発生したとき,通常ですと
エラー発生のWindowがPopするのですが,Popせずに
さらにそれ以下のコードが実行されずにイベントを抜ける
現象が発生しています。

検索エンジンやマイクロソフト技術情報で現象をさがしたのですが
これといったものをみつけることができませんでした。

ちゃんとエラーがでてもらわないとコーディングに支障をきたしぃます><

なにかいい解決策もしくはこのことに関する記述があるURL教えていただけないでしょうか?

よろしくお願いします

再現方法
1.新規プロジェクトを作成する
2.Form1.AllowDropプロパティをTrueにする
3.コードに下記内容を記述する

    Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.Copy
    End Sub

    Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
        FileOpen(1, "", OpenMode.Append)
        MsgBox("??")
    End Sub

不具合内容
FileOpen時にエラーが発生せず,Msgboxも実行されない


特攻隊長まるるう  2006-02-08 23:26:24  No: 94047

エラー処理は
Try...Catch...Finally ステートメントを使ってください。

あと、質問には関係ないですが
有効なファイル番号は FreeFile 関数を使用して取得してください。


0で除算しました  2006-02-08 23:33:31  No: 94048

>エラー処理は
>Try...Catch...Finally ステートメントを使ってください。

試されたとは思うのですが結果は同じです

>あと、質問には関係ないですが
>有効なファイル番号は FreeFile 関数を使用して取得してください。

ご指摘ありがとうございます
今回はわざとエラーが出るコードを記述しただけなので
通常はもちろんFreeFileを使用しています


特攻隊長まるるう  2006-02-09 00:44:08  No: 94049

>試されたとは思うのですが結果は同じです
ありゃ。こちらでは確かに再現方法の通りの方法で
エラー表示は出ませんでしたが Try...Catch 使えば
  ex.Message  "パス/ファイル アクセス エラー"
で引っ掛かりました。
            MsgBox("Err")
も実行されます。
環境は VB.NET 2003 Win2000
現象を再現できませんので回答はできませんが
情報のみということで。


特攻隊長まるるう  2006-02-09 00:48:31  No: 94050

…というかファイルのパスが有効かどうか?は
FileOpen のエラーに任せるんじゃなくて、
System.IO.File あたりの関数を利用したりして
自分で調べられる気がしますけどね。


0で除算しました  2006-02-09 01:16:26  No: 94051

こちら側のCatchの記述に誤りがあって
正常に動作していませんでした,申し訳ない

Tryでエラーを検出することができるようになりました
ありがとうございます

ただ,本来質問したかった内容ですが
Form.LoadやCommand.Clickではエラーが発生するのに
Form.DragDropやForm.DragEnterではエラーがスルーされる
のがひっかかります。

イベントの種類によってはデバッガーでエラーを検出しないで
スルーされる仕様なのでしょうか?

デバッガーのエラーを頼りにできないのではなんのための
デバッガーなのかと・・・><

>今回はわざとエラーが出るコードを記述しただけなので
ここにも書いたとおりFileOpenに関してはあくまでもエラーを発生
させるために書いた記述なので^^;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加