.NET Framework のコントロールは、コントロールにコントロールを追加することができます。これはコンテナコントロールに限らず、テキストボックスなどの全てのコントロールが対象になります。
通常、コントロールは一つのコントロールから出来ていると思ってしまいますが、複数のコントロールから出来ているものもあります。コントロールの中に入っているコントロールを扱う事で、より細かな制御が可能になったりします。そこでコントロールの中にコントロールを持っているコントロールは、何なのかを調べてみました。
| 中にコントロールがあるもの |
中にコントロールがないもの |
| DataGridView | Button |
| HScrollBar | CheckBox |
| VScrollBar | CheckedListBox |
| DomainUpDown | ComboBox |
| UpDownButtons | DateTimePicker |
| UpDownEdit | FlowLayoutPanel |
| NumericUpDown | Form |
| UpDownButtons | GroupBox |
| UpDownEdit | HScrollBar |
| PropertyGrid | Label |
| DocComment | LinkLabel |
| Label | ListBox |
| Label | ListView |
| HotCommands | MaskedTextBox |
| LinkLabel | MonthCalendar |
| PropertyGridView | Panel |
| VScrollBar | PictureBox |
| ToolStrip | PrintPreviewControl |
| SplitContainer | ProgressBar |
| SplitterPanel | RadioButton |
| SplitterPanel | RichTextBox |
| TabControl | Splitter |
| TabPage | TextBox |
| TabPage | TrackBar |
| ToolStripContainer | TableLayoutPanel |
| ToolStripContentPanel | TreeView |
| ToolStripPanel | UserControl |
| ToolStripPanel | VScrollBar |
| ToolStripPanel | WebBrowser |
| ToolStripPanel | |
SplitContainer、TabControl、ToolStripContainer は中のコントロールにアクセスする手段があるので、あって当たり前ですね。DataGridView はスクロールバーを中に持っているんですね。いがいです。DomainUpDown、NumericUpDown は共にアップダウン用のコントロールを持っているようです。一番すごいのが PropertyGrid ですね。ものすごい数のコントロールを中に持っています。
このようにコントロールの中には公開されていないコントロールもあります。公開されてないためそのコントロールの変数を宣言することができません。それでも Control 型としては扱えるので、その範囲内で処理はできますね。
コントロールを中に持っているコントロールを使う時は、何かの参考にしてみてください。