いつもお世話になります
環境 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も実行されない
エラー処理は
Try...Catch...Finally ステートメントを使ってください。
あと、質問には関係ないですが
有効なファイル番号は FreeFile 関数を使用して取得してください。
>エラー処理は
>Try...Catch...Finally ステートメントを使ってください。
試されたとは思うのですが結果は同じです
>あと、質問には関係ないですが
>有効なファイル番号は FreeFile 関数を使用して取得してください。
ご指摘ありがとうございます
今回はわざとエラーが出るコードを記述しただけなので
通常はもちろんFreeFileを使用しています
>試されたとは思うのですが結果は同じです
ありゃ。こちらでは確かに再現方法の通りの方法で
エラー表示は出ませんでしたが Try...Catch 使えば
ex.Message "パス/ファイル アクセス エラー"
で引っ掛かりました。
MsgBox("Err")
も実行されます。
環境は VB.NET 2003 Win2000
現象を再現できませんので回答はできませんが
情報のみということで。
…というかファイルのパスが有効かどうか?は
FileOpen のエラーに任せるんじゃなくて、
System.IO.File あたりの関数を利用したりして
自分で調べられる気がしますけどね。
こちら側のCatchの記述に誤りがあって
正常に動作していませんでした,申し訳ない
Tryでエラーを検出することができるようになりました
ありがとうございます
ただ,本来質問したかった内容ですが
Form.LoadやCommand.Clickではエラーが発生するのに
Form.DragDropやForm.DragEnterではエラーがスルーされる
のがひっかかります。
イベントの種類によってはデバッガーでエラーを検出しないで
スルーされる仕様なのでしょうか?
デバッガーのエラーを頼りにできないのではなんのための
デバッガーなのかと・・・><
>今回はわざとエラーが出るコードを記述しただけなので
ここにも書いたとおりFileOpenに関してはあくまでもエラーを発生
させるために書いた記述なので^^;
ツイート | ![]() |