ごまなつ Blog

楽しく働ける世界を目指して

【C#】ダイアログを出した後フォーカスがSplitConteinerの境界線に当たる

結論

原因はよくわかっていないが、this.ProcessTabKey(true);を入れると治った

経緯

画面にSplitConteinerを使って2つのパネルを配置していました。境界線にもフォーカスが当たるので、TabStopをfalseに変更し、フォーカスが当たらないようにしました。しかし、ある操作の後ダイアログを出し、backgroundworkerを使った非同期処理を行った後、フォーカスが境界線に当たっていました。backgroundworkerを使った非同期処理でない場合は、フォーカスが境界線に当たることはありませんでした。

フォーカスが境界線に当たってしまうのなら、Tabキーを押してしまえばいいのでは?と考えthis.ProcessTabKey(true);をbackgroundworkerを使った非同期処理の最後に書くと、解決しました。しかし、Tabを押したにもかかわらずタブオーダーがひとつ前に当たってしまうことが謎です。