- - PR -
ユーザーコントロールを貼り付けた場合のActiveControlについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-23 14:18
初めて書込みします。初心者です。
Labelを継承したユーザーコントロールに、テキストボックス"textBox1"を追加したコントロール"UserControl1"を作成しました。 このコントロールをフォームに貼り付けて実行し、textBox1にフォーカスがある状態でActiveControlを取得すると、"UserControl1"ではなくその中の"textBox1"が取得されました。 これを、ActiveControl="UserControl1"としたいのですが、何か方法はありますでしょうか? ※ちなみに… Labelを継承せずに、テキストボックスだけを追加したユーザーコントロールの場合は、ActiveControl="UserControl1"になっていました。
| ||||||||
|
投稿日時: 2005-09-23 14:59
こんにちは、じゃんぬ です。
ん? そうなること自体がおかしいと思います。 フォームから ActiveControl を参照した時は UserControl になるハズ。 UserControl 内での ActiveControl を参照した時のみ、textBox1 になるハズ。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-23 15:04
って、書いておいてから [検索] し直して思い出しましたが、
そうなるのは SelectNextControl の時だけだったかも... http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23818&forum=7 今環境がないので確認できません。。。 解決策としては、Parent の Type を見て、 UserControl であれば、UserControl を返すことになるのかな。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-24 20:59
こんばんは。じゃんぬさん、アドバイスありがとうございます。
IContainerControlを継承して、ActiveControlプロパティを実装するということでしょうか? こんな感じで追加してみましたが、変わりませんでした。
| ||||||||
|
投稿日時: 2005-09-24 21:33
本論とは関係ありませんが。
> Labelを継承したユーザーコントロール .NET の用語ではユーザーコントロールは System.{Windows.Forms|Web.UI}.UserControl を継承したものなので、別の呼び方をしたほうがいいかと思います。 最初見たときに勘違いしたもので。 | ||||||||
|
投稿日時: 2005-09-26 09:16
こんにちは、じゃんぬ です。
いや、それだけのために ActiveControl プロパティを作るんですか? それと、ActiveControl という名前のプロパティだと「本来の動作」との差異があるため、混乱を招きます。 別の名前で、別の新規のプロパティとして UserControl 側に定義しましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-26 09:21
こんにちは、じゃんぬ です。
広義と狭義の差異によるものでしょうね。 カスタム コントロールのプロパティ、メソッド、およびイベント _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1