所有,我想将自定义 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”之前,代码将无一异常(exception)地运行,但不会出现
CustomRichTextBox
。现在我得到了 NullReferenceException
,我对这两种情况都感到困惑。我在这里做错了什么? 最佳答案
您真正缺少的是为 TabPage 变量设置“名称”属性。
您传递给 TabPage 的构造函数的字符串只是设置 TabPage.Text 属性。
只需在实例化 TabPage 后添加以下代码,就可以了:
TabPage tmpTabPage = new TabPage("Test");
tmpTabPage.Name = "Test"
// Rest of your code here
您收到 NullReferenceException 的原因是因为以下代码:
tabControl1.TabPages["Test"]
未返回对 TabPage 的引用,因为未设置 TabPage 的“名称”属性。
关于c# - 以编程方式向 TabPage 添加控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10656629/