kes*_*ing 0 c# tabcontrol winforms
我有问题.我遇到了很多错误,当我尝试从用户控件添加标签时,这让我很烦.这是代码
public Form1 f1 { get; private set; }
private void button1_Click(object sender, EventArgs e)
{
TabPage tp = new TabPage { };
tp.Text = "NewTab";
tp.Controls.Add(new b());
f1.tabControl1.TabPages.Add(tp); //>>> errors here
}
Run Code Online (Sandbox Code Playgroud)
您的代码未分配f1,这就是您在运行时获取空引用异常的原因.
取决于项目的架构......
A.如果UserControl在Form后面的父代码中实例化,那么只需注入f1构造函数UserControl:
private readonly MyForm _f1;
public b(MyForm f1){
InitializeComponents();
_f1 = f1;
}
private void button1_Click(object sender, EventArgs e) {
TabPage tp = new TabPage { };
tp.Text = "NewTab";
tp.Controls.Add(new b());
// assumes 'tabControl1' exists as a publicly accessible control
_f1.tabControl1.TabPages.Add(tp);
}
Run Code Online (Sandbox Code Playgroud)
B.如果使用MVP然后,使用您拥有的代码,Presenter可以f1在初始化时分配变量但是创建setter public或internal.