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

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

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

Re[3]: CellEnterイベントでフォームをcloseできない


(過去ログ 96 を表示中)

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

■57502 / inTopicNo.1)  CellEnterイベントでフォームをcloseできない
  
□投稿者/ german (1回)-(2011/03/01(Tue) 22:15:44)

分類:[VB.NET/VB2005 以降] 

vb2008になります。

form_aとform_bと作成し、form_bには、DataGridViewを配置してあります。

行いたい事は、form_bのDataGridViewから、選択したセルの値を取得した後、
form_aをOpenし、Form_bをCloseしたいのです。

現在、DataGridView1_CellEnterイベント内で、
form_aをOpenした後、form_bを、Me.Closeにしているのですが、

Me.Closeの箇所で、

InvalidOperationExceptionはハンドルされませんでした。
操作はこのイベントハンドラは実行できません。

とエラーとなってしまいます。

何とか、form_bを閉じる方法はないでしょうか?

何卒、宜しくお願いします。
引用返信 編集キー/
■57504 / inTopicNo.2)  Re[1]: CellEnterイベントでフォームをcloseできない
□投稿者/ shu (490回)-(2011/03/01(Tue) 23:10:29)
No57502 (german さん) に返信

form_aにCloseしてもらえば出来ると思います。
引用返信 編集キー/
■57505 / inTopicNo.3)  Re[1]: CellEnterイベントでフォームをcloseできない
□投稿者/ じゃんぬねっと (42回)-(2011/03/01(Tue) 23:31:19)
じゃんぬねっと さんの Web サイト
No57502 (german さん) に返信
> 行いたい事は、form_bのDataGridViewから、選択したセルの値を取得した後、
> form_aをOpenし、Form_bをCloseしたいのです。

Open? ちょっと珍しい表現方法ですね。
Show メソッド、ShowDialog メソッド、どちらなのでしょうか?
後述の form_a の絡みを見る限り Show メソッドだと見ていますが。

> 現在、DataGridView1_CellEnterイベント内で、
> form_aをOpenした後、form_bを、Me.Closeにしているのですが、

CellEnter イベントだと "選択したセルの値を取得した後" としては不適切ではないですか?
DataGridView にフォーカスを移した後に、キーボードで矢印キーを押すだけで選択の余地もなく、Form ごと閉じられちゃうなんてムゴすぎます。

> Me.Closeの箇所で、
> InvalidOperationExceptionはハンドルされませんでした。
> 操作はこのイベントハンドラは実行できません。
> とエラーとなってしまいます。

「form_b の CellEnter イベントの中で Me.Close と記述している」
「例外が起きている個所は StackTrace で見ても Close メソッドである」
本当に合っていますか?
Form が参照不能状態で何かが処理されてしまっている典型的なパターンに見えなくもないものですから、ご確認ください。

# 確かに InvalidOperationException はイベントのタイミング的な問題 (コンポーネント側の WndProc 内部が原因) で起きることもありますが。

> 何とか、form_bを閉じる方法はないでしょうか?
> 何卒、宜しくお願いします。

なぜかわからない時は、一旦あやしいところをコメントアウトなどして、
現象が再現できるミニマムコードを書くと良いですよ。
そうやって勉強している時期が俺にもありました。
引用返信 編集キー/
■57507 / inTopicNo.4)  Re[2]: CellEnterイベントでフォームをcloseできない
□投稿者/ german (3回)-(2011/03/02(Wed) 00:35:13)
No57504 (shu さん) に返信

VB初心者で、年を取ると発想の転換ができないもので・・・。

助かりました。
本当にありがとうございました。

また何かあったらお願い致します。



> ■No57502 (german さん) に返信
>
> form_aにCloseしてもらえば出来ると思います。
解決済み
引用返信 編集キー/
■57508 / inTopicNo.5)  Re[2]: CellEnterイベントでフォームをcloseできない
□投稿者/ german (4回)-(2011/03/02(Wed) 00:39:36)
No57505 (じゃんぬねっと さん) に返信

解決致しました。
本当にありがとうございました。

現象が再現できるミニマムコードを書くと良いですよ。
というアドバイスなのですが、
VB初心者なのでよくわかりません。
参考になるサイトなどございましたら、ご教授下さい。

また何かあったら、宜しくお願い致します。



> ■No57502 (german さん) に返信
>>行いたい事は、form_bのDataGridViewから、選択したセルの値を取得した後、
>>form_aをOpenし、Form_bをCloseしたいのです。
>
> Open? ちょっと珍しい表現方法ですね。
> Show メソッド、ShowDialog メソッド、どちらなのでしょうか?
> 後述の form_a の絡みを見る限り Show メソッドだと見ていますが。
>
>>現在、DataGridView1_CellEnterイベント内で、
>>form_aをOpenした後、form_bを、Me.Closeにしているのですが、
>
> CellEnter イベントだと "選択したセルの値を取得した後" としては不適切ではないですか?
> DataGridView にフォーカスを移した後に、キーボードで矢印キーを押すだけで選択の余地もなく、Form ごと閉じられちゃうなんてムゴすぎます。
>
>>Me.Closeの箇所で、
>>InvalidOperationExceptionはハンドルされませんでした。
>>操作はこのイベントハンドラは実行できません。
>>とエラーとなってしまいます。
>
> 「form_b の CellEnter イベントの中で Me.Close と記述している」
> 「例外が起きている個所は StackTrace で見ても Close メソッドである」
> 本当に合っていますか?
> Form が参照不能状態で何かが処理されてしまっている典型的なパターンに見えなくもないものですから、ご確認ください。
>
> # 確かに InvalidOperationException はイベントのタイミング的な問題 (コンポーネント側の WndProc 内部が原因) で起きることもありますが。
>
>>何とか、form_bを閉じる方法はないでしょうか?
>>何卒、宜しくお願いします。
>
> なぜかわからない時は、一旦あやしいところをコメントアウトなどして、
> 現象が再現できるミニマムコードを書くと良いですよ。
> そうやって勉強している時期が俺にもありました。
解決済み
引用返信 編集キー/
■57516 / inTopicNo.6)  Re[3]: CellEnterイベントでフォームをcloseできない
□投稿者/ じゃんぬねっと (45回)-(2011/03/02(Wed) 16:30:45)
じゃんぬねっと さんの Web サイト
No57508 (german さん) に返信
> 現象が再現できるミニマムコードを書くと良いですよ。
> というアドバイスなのですが、
> VB初心者なのでよくわかりません。

消去法という解決方的な話ですので、VB が初心者かどうかは関係ないです。

> 参考になるサイトなどございましたら、ご教授下さい。

ミニマムコードという言い回しがまずかったでしょうか。
要するに 「不具合の現象が再現できる必要最小限のコード」 のことです。

不具合が起きているソースコードは、あなた様の目の前にあるソースコードです。
それを最小限化するのに参考になるサイトがあったら、逆に怖くないですか? (w

回答がついているのに、なぜ回りくどいことを書いたかと申し上げますと、
今回の件で、何故 InvalidOperationException という例外が発生するのかを、
理屈で理解しないと、別の機会に同じことを繰り返すのではないかと思ったのです。
(あと正しく伝えるためのデバッグ・確認作業で自己解決できるのではとも思いました)

プログラムは理屈の塊ですから、理屈で理解することが大切だと思います。
わかりにくい書き方をしてしまい、申し訳ありませんでした。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -