少しずつゲームを作るスレ (960レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

944
(1): Text Dungeon(英語化) 06/12(木)00:32 ID:yZyhP/xw(1/2) AAS
↑でコンボボックス(ドロップダウンリスト)を配置したら、何故か
「常にコンボボックスがフォーカスされ、背景(ユーザーコントロール)にフォーカスを移せない」
(this.Focus()を何度書いても背景にフォーカスを移せない)という現象が発生し、
'1'キーを押してもゲームを開始できないし、'2'キーを押しても続きから始められなくなってしまった
(ただし、クリックすればゲームを始められる)

ネットを検索しても同じような現象を見つけられず、AI神に泣きつきながらあれこれ試した結果、
コンボボックスのTabStopプロパティをfalseにした上で、DropDownCloseイベント発生時に
this.ActiveControl = nullを入れて無理やり非アクティブにしてやると、
コンボボックスの操作後に背景にフォーカスが移ってキー入力が効くようになった

同じような現象が起きて困っている人のために一応ここに記す
省2
946: Text Dungeon(英語化) 06/12(木)22:10 ID:yZyhP/xw(2/2) AAS
>>945
レスありがとうございます。
Text Dungeonはフォームは1つ(Form1)で、From1上に各画面ごとのユーザーコントロール
(例えばタイトル画面だったらUserControl_Title、メイン画面だったらUserControl_Mainなど)があって、
ユーザーコントロールを切り替える(.Visible=true/falseする)ことで画面を切り替える仕様になっています
また、KeyPressイベントは各ユーザーコントロールのイベントハンドラ(タイトル画面ならUserControl_Title_KeyPress)で処理しています

で、ユーザーコントロールにはKeyPreviewプロパティがないので、Form1のKeyPreviewをtrueにして
Form1のkeyPressイベントをUserControl_Title_KeyPressに転送してみたところ、>>944の現象を回避することができました
こっちの方がActiveControl = nullなんてことをするより筋のいいやり方かもしれません

ただ、この手法だとフォーカスは相変わらずコンボボックスに残るため
省10
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 2.157s*