- comments
- trackbacks

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓
0 comments
0 trackbacks

Buttonで「閉じる」を作成して、ウィンドウを閉じたいんですが、
TextBoxのLostFocusイベントがあるために、TextBoxからフォーカスが外れた時点でイベントがはしってへんな感じになってしまいました
その対策と対策時の注意点をちょっとメモしておきます

○まずはXmalでイベントを付けるのではなくLoadイベントでLostFocusを追加(ここはどちらでも良いですが)

//ロードイベント
private void Main_Load(object sender, System.EventArgs e)
{
//TextBox1のLostFocusイベントハンドラを追加する
TextBox1.LostFocus += TextBox1_LostFocus;  
}

○LostFocusイベントは行いたい処理を追加する
//LostFocusイベントハンドラ
private void TextBox1_LostFocus(object sender, EventArgs e)
{
//ここでいろいろチェック処理
}
○「閉じる」ボタンをクリック時
・ここでtextBlock1のロストフォーカスイベントを破棄しておきます。PreviewKeyDownだと、フォーカスが移る前のイベントなのでLostFocusの前に破棄することができました。

private void Button1_PreviewKeyDown(object sender, KeyEventArgs e) {
//TextBox1のLostFocusイベントハンドラを破棄する
TextBox1.LostFocus -= TextBox1_LostFocus;
}

※ここで注意点なのですが、このままだと「閉じる」ボタンをクリックし→そのままドラッグした場合に閉じない(閉じるのはKeyUpにしていたとき)事象が発生します。そしてLostFocusがなくなってしまっていました。
○そのため、「閉じる」ボタンのキーアップイベントでイベントをまた追加させてあげることで、問題は解決しました。

private void Button1_PreviewKeyUp(object sender, KeyEventArgs e) {
//TextBox1のLostFocusイベントハンドラを追加する
TextBox1.LostFocus -= TextBox1_LostFocus;
}

これで「閉じる」ボタンをクリック→やっぱり「閉じる」をやめたいので「閉じる」ボタンからフォーカスをはずしてクリックアップしたいとする期待通りの動作になりました。

それでは(*´-`*)ノ
スポンサーサイト
 ↑↑↑↑↑↑よければクリックをお願いします↓↓↓↓↓↓

プロダクトマネージャー - なれる!SE4 誰でもできる?プロジェクト管理 (電撃文庫)

【C++】

comment iconコメント ( -0 )

コメントの投稿






trackback iconトラックバック ( -0 )

Trackback URL:

この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。