.NET Framework のコントロールは、コントロールにコントロールを追加することができます。これはコンテナコントロールに限らず、テキストボックスなどの全てのコントロールが対象になります。

 通常、コントロールは一つのコントロールから出来ていると思ってしまいますが、複数のコントロールから出来ているものもあります。コントロールの中に入っているコントロールを扱う事で、より細かな制御が可能になったりします。そこでコントロールの中にコントロールを持っているコントロールは、何なのかを調べてみました。

中にコントロールがあるもの 中にコントロールがないもの
DataGridViewButton
    HScrollBarCheckBox
    VScrollBarCheckedListBox
DomainUpDownComboBox
    UpDownButtonsDateTimePicker
    UpDownEdit FlowLayoutPanel
NumericUpDownForm
    UpDownButtonsGroupBox
    UpDownEditHScrollBar
PropertyGridLabel
    DocCommentLinkLabel
        LabelListBox
        LabelListView
    HotCommandsMaskedTextBox
        LinkLabelMonthCalendar
    PropertyGridViewPanel
        VScrollBarPictureBox
    ToolStripPrintPreviewControl
SplitContainerProgressBar
    SplitterPanelRadioButton
    SplitterPanelRichTextBox
TabControlSplitter
    TabPageTextBox
    TabPageTrackBar
ToolStripContainerTableLayoutPanel
    ToolStripContentPanelTreeView
    ToolStripPanelUserControl
    ToolStripPanelVScrollBar
    ToolStripPanelWebBrowser
    ToolStripPanel

 SplitContainer、TabControl、ToolStripContainer は中のコントロールにアクセスする手段があるので、あって当たり前ですね。DataGridView はスクロールバーを中に持っているんですね。いがいです。DomainUpDown、NumericUpDown は共にアップダウン用のコントロールを持っているようです。一番すごいのが PropertyGrid ですね。ものすごい数のコントロールを中に持っています。

 このようにコントロールの中には公開されていないコントロールもあります。公開されてないためそのコントロールの変数を宣言することができません。それでも Control 型としては扱えるので、その範囲内で処理はできますね。

 コントロールを中に持っているコントロールを使う時は、何かの参考にしてみてください。