- - PR -
【C#】フォーカス制御について教えて下さい。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-11 19:07
.NetFrameWork2.0(C#.Net2005)にて開発を行っております。
ユーザー様より現行システムに合わせて、Up、Downキーでのフォーカス遷移制御を求められ、 以下のコードをフォームに組み込みました。(FormのKeyPreviewはTrueにしてあります。)
大まかな所は問題なく動いております。 ただ、splitContainerだけ、splitContainer内の先頭のコントロールにフォーカスがある状態で ・Tabキーでは同splitContainer内の次のコントロールへフォーカス移動 ・Downキーでは同splitContainer外の次のコントロールへフォーカス移動 となってしまいます。 コード中のProcessTabKeyをSelectNextControlに変えても同じ結果でした。 また、resultにはTrueが返って来ております。 1、この動作は正常なのか? 2、回避策があるのか 以上、御存知な方がおられましたら、御教示下さい。 よろしくお願い致します。(タスケテ | ||||||||
|
投稿日時: 2008-08-12 01:19
SelectNextControlを実行する際のthis.ActiveControlはどうなってる? 入力コントロールがActiveContorolであれば、
としたらどうなる? | ||||||||
|
投稿日時: 2008-08-12 09:45
resありがとうございます。
>SelectNextControlを実行する際のthis.ActiveControlはどうなってる? this.ActiveControl.Nameを随時表示するようにして確認しました。 splitContainer内のtextBoxにフォーカスがあたっている時もthis.ActiveControlは textBoxではなくsplitContainerとなっていました。 他に、Panel,TablControl,GroupBoxで試しましたが、これらの場合はフォーカスのあたっている textBoxがthis.ActiveControlとなっております。 >this.ActiveControl.Parent.SelectNextControl(...) ActivControlがsplitContainerなのでParentはFormとなり、splitContainer外の次のコントロール へフォーカス移動します。 (第一引数はthis.ActiveControlとしています。) また、直接splitContainerのtextBoxのParentを見たところ、SplitterPanelとなっており このSplitterPanelの親が見つからないようでした。 SplitterPanelのParentのリファレンスに下記記載がありました。
この辺でSplitContainer内のコントロールから親子関係を遡れなくなっているために TabとSelectNextControl,ProcessTabKeyの動作に違いが出るのかと一人納得しております。 SplitContainerの従属関係を触れない以上はフォーカス制御を自作するしか無いかと考え始めましたが 回避策等ありましたら御教示下さい。 |
1