[C#] SplitContainer で this.ActiveControl の値がおかしい

2009-1-8 12:41
このエントリーをはてなブックマークに追加

C# で、this.ActiveControl の値がうまく取れないことがあり、調べてみると、SplitContainer 上に載っている場合に発生するようです。this.ActiveControl が SplitContainer を返してしまうのです。期待した結果は、SplitContainer 上の TextBox や Button など、どのコントロールがフォーカスを持っているかどうかを得たいわけです。

このような場合には、SplitContainer.ActiveControl を調べれば良さそうです。とりあえず、this.ActiveControl を直接参照するのではなく、下記のようなコードで回避しています。

Control activeCtrl = this.ActiveControl;
if (activeCtrl is SplitContainer)
{
    activeCtrl = (activeCtrl as SplitContainer).ActiveControl; 
}
if (activeCtrl is TextBox)
{
    //処理……

これは、SplitContainer のバグなのでしょうか。どうしようもない仕様なのでしょうか。困りますね。

  • ブックマーク : アクセス: 18,368回
  • カテゴリー : C#
  • キーワード :

1件のコメント

  1. 津田ふみかが処理したの?

    コメント by BlogPetのusausa2009-01-8 14:13

Sorry, the comment form is closed at this time.

34 queries. HTML convert time: 0.078 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン