访问拆分容器.net的子控件

时间:2014-09-07 23:02:16

标签: c# .net winforms parent-child

我正在尝试在单击时在标签页中动态创建的富文本框中打开文件。但它与另一个元素一起位于拆分容器内。出于某种原因,当我尝试访问它时,我得到的Object引用未设置为对象错误的实例。

以下是代码:

动态创建所述标签页:

public class Texttab : TabPage
{
    readonly RichTextBox _text = new RichTextBox();
    ConsoleControl.ConsoleControl ca = new ConsoleControl.ConsoleControl();
    private SplitContainer split = new SplitContainer();

    public Texttab()
    {
        split.Dock = DockStyle.Fill;
        split.Orientation = Orientation.Horizontal;
        split.Name = "split";
        _text.Dock = DockStyle.Fill;
        _text.Name = "textbox";
        _text.Font = fontx;
        _text.BackColor = Color.FromName(back);
        _text.ForeColor = Color.FromName(front);

        ca.Dock = DockStyle.Fill;
        ca.Name = "cmdbox";
        ca.StartProcess("cmd", null);
        ca.Font = fonty;

        Controls.Add(split);
        split.Panel1.Controls.Add(_text);
        split.Panel2.Controls.Add(ca);


    }



}

访问TEXTBOX并打开文本文件的代码:

    private void OpenToolStripMenuItemClick(object sender, EventArgs e)
    {

            var dx = new OpenFileDialog();
            dx.ShowDialog();
            dx.Filter = Resources.Form1_openToolStripMenuItem_Click_Text_Files___txt____txt_Python_Files___py____py_Javascript_Files___js____js_C_Files___c____c_CPP_Files___cpp____cpp_Shell_Files___sh__bat____sh___bat_All_Files__________;
            RichTextBox selectedRtb = (RichTextBox)tabControl1.SelectedTab.Controls["split"].Controls["textbox"];
            selectedRtb.LoadFile(dx.FileName, RichTextBoxStreamType.PlainText);
    }

谢谢,对此问题的任何帮助表示赞赏。我几乎肯定这个问题与拆分控制有关。再次感谢!

1 个答案:

答案 0 :(得分:2)

您必须这样访问RichTextBox,因为SplitContainer中的Panel不是命名项。

(RichTextBox)((SplitContainer )tabControl1.SelectedTab.Controls["split"]).Panel1.Controls["textbox"]
相关问题