全部,我想将自定义RichTextBox
添加到WinForm TabPage
。我尝试过以下代码说明的各种事情
TabPage tmpTabPage = new TabPage("Test");
tabControl1.TabPages.Add(tmpTabPage);
CustomRichTextBox tmpRichTextBox = new CustomRichTextBox();
tmpRichTextBox.LoadFile(@"F:\aaData\IPACostData\R14TData\ACT0\1CALAEOSAudit_log.rtxt");
// Attempted FIX.
tabControl1.SuspendLayout();
tabControl1.TabPages["Test"].Controls.Add(tmpRichTextBox); // This throws a NullReferenceException??
tabControl1.ResumeLayout();
tmpRichTextBox.Parent = this.tabControl1.TabPages["test"];
tmpRichTextBox.WordWrap = tmpRichTextBox.DetectUrls = false;
tmpRichTextBox.Font = new Font("Consolas", 7.8f);
tmpRichTextBox.Dock = DockStyle.Fill;
tmpRichTextBox.BringToFront();
在我添加“aAttempted FIX”之前,代码将毫无例外地运行,但CustomRichTextBox
不会出现。现在我得到了NullReferenceException
,我对这两种情况感到困惑。我在这里做错了什么?
答案 0 :(得分:5)
您真正缺少的是为TabPage变量设置“Name”属性。 您传递给TabPage构造函数的字符串仅设置TabPage.Text属性。
在实例化TabPage后添加以下代码,你应该没问题:
TabPage tmpTabPage = new TabPage("Test");
tmpTabPage.Name = "Test"
// Rest of your code here
您获得NullReferenceException的原因是因为以下代码:
tabControl1.TabPages["Test"]
没有返回对TabPage的引用,因为没有设置TabPage的“Name”属性。
答案 1 :(得分:3)
通过将tmpRichTextBox添加到tmpTabPage然后将tmpTabPage添加到tabControl1
来尝试这样 TabPage tmpTabPage = new TabPage("Test");
CustomRichTextBox tmpRichTextBox = new CustomRichTextBox();
tmpRichTextBox.LoadFile(@"F:\aaData\IPACostData\R14TData\ACT0\1CALAEOSAudit_log.rtxt");
// Attempted FIX.
tmpTabPage.SuspendLayout();
tmpTabPage.Controls.Add(tmpRichTextBox); // This throws a NullReferenceException??
tmpTabPage.ResumeLayout();
tmpRichTextBox.Parent = tmpTabPage;
tmpRichTextBox.WordWrap = tmpRichTextBox.DetectUrls = false;
tmpRichTextBox.Font = new Font("Consolas", 7.8f);
tmpRichTextBox.Dock = DockStyle.Fill;
tmpRichTextBox.BringToFront();
//tmpTabPage.Controls.Add(tmpRichTextBox);
tabControl1.TabPages.Add(tmpTabPage);