- - PR -
テキストボックスでエンターを押下するとクリックイベントが発生する
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-16 21:37
WindowsアプリをC#で開発しています。
現在、件名の現象でこまっています。 Form1とForm2がありForm1にはForm2を表示するボタンとテキストボックスがあり Form2にはForm1にもどるボタンがあります。 Form1からForm2を表示しForm2からForm1にもどってマウスでテキストボックスに フォーカスを移しエンターキーを押下するとなぜかクリックイベントが 発生し、Form2が表示されてしまいます。 これはなぜでしょうか? 解決できなく投稿させていただきました。 よろしくおねがいします | ||||||||||||||||
|
投稿日時: 2004-10-16 23:46
Form1のAcceptButtonが設定されていませんか?
これが設定されるとEnterキーを押すたびに、ボタンがクリックされます。 | ||||||||||||||||
|
投稿日時: 2004-10-17 16:10
べっかめさん返信ありがとうございます。
フォームのAcceptButtonの設定な「なし」 になっています。 特にフォームのプロパティはいじっていないのですが・・・ なにがいけないんだろう? まだ、解決できません よろしくお願いします | ||||||||||||||||
|
投稿日時: 2004-10-17 16:36
再現させたいのですが、、、 Form1にもどるボタンってなに? とりあえず、 Form1からForm2を表示するコードと Form2からForm1に戻るコードないですか。 あと、Form1のテキストボックスにイベントハンドラが 設定してあればそれも。 #投稿したあとに気づきましたが、GDNにもポストしてません? #とりあえず、そちらをみて再現できました。 [ メッセージ編集済み 編集者: nanbu 編集日時 2004-10-17 17:18 ] | ||||||||||||||||
|
投稿日時: 2004-10-17 17:15
nanbuさん、返信ありがとうございます。
追加情報としてMDIを使用してFormの遷移をしています。 今、MDIをはずして実行するとこの現象はおきませんでした。 MDIが関係しているのでしょうか・・・ このアプリの仕様は以下のとおりです 1.親フォームのFormMainと子フォームのFrom1とForm2があります 2.Form1にはForm2を表示するボタンとテキストボックスを1つ用意します 3.Form2にはForm1を表示するボタンを用意します 4.各フォームのボタンをおすと重複してフォームができてしますので From1とForm2はSingletonにしています 5.ボタンの処理はまとめてFormMain内で処理しています ですので、ボタンはPublicに設定しています 上記の仕様のコードは以下のとおりです 1.Form1からForm2を表示するコード
2.Form2からForm1を表示するコード
2.Form1のSingletonの内容 宣言部とコンストラクタ
唯一のインスタンスを返すメソット
>あと、Form1のテキストボックスにイベントハンドラが >設定してあればそれも なにも設定していません。 でも、イベントがおきたかどうかの判断でメッセージボックスを設定しています 以上です。 わかりづらかったらすいません。 何度でも書き直すのでよろしくおねがいします | ||||||||||||||||
|
投稿日時: 2004-10-17 17:25
南部です。
if (frm1!=null) {frm1.Hide();} を if (frm1!=null) { frm1.Hide(); frm1.ActiveControl = null; } としてみて下さい。 | ||||||||||||||||
|
投稿日時: 2004-10-17 17:54
nanbuさん、返信ありがとうございます
frm1.ActiveControl=null; を設定してましたがやはりテキストボックスで クリックイベントが発生し画面が遷移してしまいました。 >#投稿したあとに気づきましたが、GDNにもポストしてません? >#とりあえず、そちらをみて再現できました。 ばれちゃいましたね(汗) 時間があまりないので2箇所に投稿しちゃいました | ||||||||||||||||
|
投稿日時: 2004-10-17 18:19
南部です。
下記コードでテキストボックスを選択後のEnterで ボタンクリックされなくなりましたけど。 環境が違うのかな? こちらの環境は Window Server 2003 .NET Framework 1.1 SP1 です。 // Form2表示処理 private void ToForm2_Click(object sender, System.EventArgs e) { if (frm2==null) { frm2 = Form2.getInstance(); frm2.MdiParent = this; frm2.button1.Click += new System.EventHandler(ToForm1_Click); frm2.Closed += new EventHandler(ChildFrom2_Closed); } frm2.Show(); if (frm1!=null) { frm1.Hide(); frm1.ActiveControl = null; // 追加コード } } | ||||||||||||||||
