少しずつゲームを作るスレ (951レス)
少しずつゲームを作るスレ http://mevius.5ch.net/test/read.cgi/gamedev/1366762846/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
944: Text Dungeon(英語化) [sage] 2025/06/12(木) 00:32:38.42 ID:yZyhP/xw ↑でコンボボックス(ドロップダウンリスト)を配置したら、何故か 「常にコンボボックスがフォーカスされ、背景(ユーザーコントロール)にフォーカスを移せない」 (this.Focus()を何度書いても背景にフォーカスを移せない)という現象が発生し、 '1'キーを押してもゲームを開始できないし、'2'キーを押しても続きから始められなくなってしまった (ただし、クリックすればゲームを始められる) ネットを検索しても同じような現象を見つけられず、AI神に泣きつきながらあれこれ試した結果、 コンボボックスのTabStopプロパティをfalseにした上で、DropDownCloseイベント発生時に this.ActiveControl = nullを入れて無理やり非アクティブにしてやると、 コンボボックスの操作後に背景にフォーカスが移ってキー入力が効くようになった 同じような現象が起きて困っている人のために一応ここに記す (こんなところに書いても誰も見つけられない定期) っていうか検索して出てこないのだからおま環なんだろうか、わけがわからないよ http://mevius.5ch.net/test/read.cgi/gamedev/1366762846/944
946: Text Dungeon(英語化) [sage] 2025/06/12(木) 22:10:43.46 ID:yZyhP/xw >>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なんてことをするより筋のいいやり方かもしれません ただ、この手法だとフォーカスは相変わらずコンボボックスに残るため コンボボックスの操作終了後も四角い点線枠が表示され続ける(↓) https://imgur.com/7TSHahn.png のが妙に気になるので、一旦は>>944の処理で対応したいと思います。 ちなみに本現象はコンボボックスに限らずキー入力があるコントロールをユーザーコントロール上に置くと発生するようで どうもユーザーコントロールはKeyPressイベントはあるのにTabStopプロパティはない、 子コントロールを置けるのにKeyPreviewプロパティはないなど、フォーカス周りの設計思想があいまいというか、 システム側にぶん投げてるような感じで、プログラマー側ではフォーカスを制御できないような気がします (調べたわけではないので個人の感想です) つまり、わしが悪いんやない、Microsoftがいい加減なのが悪かったんや……! (と、いい加減プログラマーが申しております) http://mevius.5ch.net/test/read.cgi/gamedev/1366762846/946
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s