C# 如何使用UserControl控制MainForm的面板?
将myUserControl添加到MainForm后。如何将myUserControl2添加到主窗体的其他面板C# 如何使用UserControl控制MainForm的面板?,c#,winforms,C#,Winforms,将myUserControl添加到MainForm后。如何将myUserControl2添加到主窗体的其他面板 MainForm myMainForm; private void ButtonResort_MouseClick(object sender, MouseEventArgs e) { panelSub.Controls.Add(new myUserControl()); } 这是我尝试过的代码,它只是给了我一个错误。 “对象引用未设置为对象的实例。”问题是您的myMain
MainForm myMainForm;
private void ButtonResort_MouseClick(object sender, MouseEventArgs e)
{
panelSub.Controls.Add(new myUserControl());
}
这是我尝试过的代码,它只是给了我一个错误。
“对象引用未设置为对象的实例。”问题是您的
myMainForm
从未设置过
您可以在myUserControl
构造函数中设置它
public partial class myUserControl : UserControl
{
MainForm myMainForm;
public myUserControl()
{
InitializeComponent();
}
private void Button1_MouseClick(object sender, MouseEventArgs e)
{
myMainForm.PanelBody.Controls.Add(new myUserControl2());
}
}
用法
问题是您的
myMainForm
从未设置过
您可以在myUserControl
构造函数中设置它
public partial class myUserControl : UserControl
{
MainForm myMainForm;
public myUserControl()
{
InitializeComponent();
}
private void Button1_MouseClick(object sender, MouseEventArgs e)
{
myMainForm.PanelBody.Controls.Add(new myUserControl2());
}
}
用法
问题是您的
myMainForm
从未设置过
您可以在myUserControl
构造函数中设置它
public partial class myUserControl : UserControl
{
MainForm myMainForm;
public myUserControl()
{
InitializeComponent();
}
private void Button1_MouseClick(object sender, MouseEventArgs e)
{
myMainForm.PanelBody.Controls.Add(new myUserControl2());
}
}
用法
问题是您的
myMainForm
从未设置过
您可以在myUserControl
构造函数中设置它
public partial class myUserControl : UserControl
{
MainForm myMainForm;
public myUserControl()
{
InitializeComponent();
}
private void Button1_MouseClick(object sender, MouseEventArgs e)
{
myMainForm.PanelBody.Controls.Add(new myUserControl2());
}
}
用法
作为在构造函数中传递表单的替代方法,您可以执行以下操作:
panelSub.Controls.Add(new myUserControl(this));
如果您对可重用性感兴趣,可以在构造函数中传递
表单
或控件
。表单也是控件的派生。与FindForm
相同。如果您提到MainForm
,它是紧密耦合的。如果您使用表单
,它可以是任何表单。通常,人们传递实际的曲面[control],在其上添加新控件。作为在构造函数中传递表单的替代方法,您可以执行以下操作:
panelSub.Controls.Add(new myUserControl(this));
如果您对可重用性感兴趣,可以在构造函数中传递
表单
或控件
。表单也是控件的派生。与FindForm
相同。如果您提到MainForm
,它是紧密耦合的。如果您使用表单
,它可以是任何表单。通常,人们传递实际的曲面[control],在其上添加新控件。作为在构造函数中传递表单的替代方法,您可以执行以下操作:
panelSub.Controls.Add(new myUserControl(this));
如果您对可重用性感兴趣,可以在构造函数中传递
表单
或控件
。表单也是控件的派生。与FindForm
相同。如果您提到MainForm
,它是紧密耦合的。如果您使用表单
,它可以是任何表单。通常,人们传递实际的曲面[control],在其上添加新控件。作为在构造函数中传递表单的替代方法,您可以执行以下操作:
panelSub.Controls.Add(new myUserControl(this));
如果您对可重用性感兴趣,可以在构造函数中传递
表单
或控件
。表单也是控件的派生。与FindForm
相同。如果您提到MainForm
,它是紧密耦合的。如果您使用表单
,它可以是任何表单。通常,人们会传递实际的surface[control],在其上添加新控件。是Winform应用程序吗?是的,它是Winform应用程序。编辑我的帖子并将我尝试使用的代码放在那里。您需要找到用户控件所在的表单,并将引用分配给myMainForm
。此时,当您执行myMainForm.PanelBody.Controls.Add(新的myUserControl2())时
您的myMainForm
在未初始化中它是Winform应用程序吗?是的,它是Winform应用程序。编辑我的帖子并将我尝试使用的代码放在那里。您需要找到用户控件所在的表单,并将引用分配给myMainForm
。此时,当您执行myMainForm.PanelBody.Controls.Add(新的myUserControl2())时
您的myMainForm
在未初始化中它是Winform应用程序吗?是的,它是Winform应用程序。编辑我的帖子并将我尝试使用的代码放在那里。您需要找到用户控件所在的表单,并将引用分配给myMainForm
。此时,当您执行myMainForm.PanelBody.Controls.Add(新的myUserControl2())时
您的myMainForm
在未初始化中它是Winform应用程序吗?是的,它是Winform应用程序。编辑我的帖子并将我尝试使用的代码放在那里。您需要找到用户控件所在的表单,并将引用分配给myMainForm
。此时,当您执行myMainForm.PanelBody.Controls.Add(新的myUserControl2())时代码>您的myMainForm
未初始化