2014-09-07 4 views
-1

Я пытаюсь открыть файл в текстовом поле, которое динамически создается на вкладке при нажатии. Но он находится внутри разделенного контейнера вместе с другим элементом. По какой-то причине, когда я пытаюсь получить к нему доступ, я получаю ссылку на объект, не установленную на экземпляр ошибки объекта.Доступ к дочерним элементам управления сплит-контейнером .net

Вот код:

Динамическое создание указанной закладке:

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); 
    } 

Спасибо, любая помощь по этому вопросу оценивается. Я почти уверен, что проблема связана с контролем разделения. Еще раз спасибо!

ответ

2

Вам нужно будет получить доступ к RichTextBox, как это, потому что панели в SplitContainer не являются именованными элементами.

(RichTextBox)((SplitContainer)tabControl1.SelectedTab.Controls["split"]).Panel1.Controls["textbox"] 
+0

Yup that the trick! Спасибо. @dharshana jagoda – gregyjames

Смежные вопросы