実現したいこと
超初心者の質問で申し訳ありません
ボタン操作(コントロール)不能状態(Enable=false)に設定した時にイベントを発生しないようにしたい
*そもそも、ボタン操作(コントロール)不能状態(Enable=false)にしても見た目上はクリックできないだけでボタン上をクリックするとイベントは発生するのでは?
ご多忙とは思いますがこの現象の対応策をご存じの方
ご教示願います
開発中システムついて
FormA(設定画面)にて設定した時刻が時間になると自動的に処理Xがバックグラウンドワーカーを使用し実行し実行中はFormB(処理経過画面)を「ProgressChanged」で表示させ、Xが終了するとFormBが閉じるシステムを開発しています。
「処理実行中は処理経過中(タイマー処理経過バーを表示)であるFormBだけでなく処理設定FormAも画面上に表示を
残して欲しい」とユーザーの希望があります
発生している問題
FormB表示中(処理X実行中)にenable=falseで設定しているFormAのボタンをクリックすると
(実際はfalse設定にしているのでクリックできないが画面上に設置しているボタンをクリックする)
処理Xの実行が終了しFormBが閉じられます
FormBが閉じられてからFormAを使用する為にボタン制御を使用可能状態(Enable=true)に設定していますが
そのロジックを実行した瞬間に先ほど使用不能状態(Enable=false)時にクリックしたイベントが発生してしまいます
1:「FromA」(制御Form)始業時から終業時まで起動が基本
*処理Xを実行させる時間設定画面
2:設定時間に到達した場合に「処理X」を起動
*起動前にFormAにある制御ボタンはボタン操作(コントロール)不能状態(Enable=false)に設定してから
処理Xを起動(バックグラウンドワーカーを使用)
3:処理X起動中はFormBも表示される
*PC画面上にFormAとFormBが表示されている
4:処理X起動中(FormB表示中)にFromA上にあるボタンをクリック
*Enable=falseに設定しているので実際にはクリック操作はできないが
ボタン上をクリックする
5:処理Xが終了しボタン操作(コントロール)可能状態(Enable=true)に設定変更
6:ボタン操作(コントロール)可能状態(Enable=true)に設定変更した後FormBをclose
7:上記6を実行した瞬間(FormBをclose)に4で操作したイベントが発生
試したこと
1:ユーザーに処理X実行中はFormAを非表示にさせて欲しいと依頼
→「FormBを誤って閉じてしまった時にわからなくなるのでダメ」と速攻で却下
2:上記操作5と6を入れ替える
*FormBをclseしてからコントロールフラグ変更
→結果は同じ
3:コントロールのイベントを一時的に無効にする
→操作不能状態には遷移しますが結果は同じ
設定時刻になると下記別UI(UI-Y)に実装されている処理Xが起動させ別UI(UI-Y)上のFormBにが表示されます
この時点でFromAのボタンはenabel=false状態になっています
FormBが表示中(処理X実行中)にFormBの「終了ボタン」をクリックします
*ボタンはコントロール無効状態に遷移しています
処理Xが終了しFormBがCloseすると
ボタンをクリックした下記メッセージBOXが表示されます
不明瞭な解説で申し訳ありませんが
お手数ですがご指摘願います
以上よろしくお願いいたします
補足情報
開発環境
Win10Pro(64)
VisualStudio2022にて開発

回答5件
あなたの回答
tips
プレビュー