您好,希望您能对我有所帮助,我已经尝试了10多个天来解决此问题。
我有一个带有1个用户控件和1个类的表单应用程序,需要使用在UserControl1内在Form1中创建的类实例。 (使用Form1到Form2可以正常工作)
CMensaje类:
namespace WindowsFormsAppInstanciarClaseEnControl
{
public class CMensajes
{
private string mensaje;
public CMensajes()
{
}
public string Mensaje { get => mensaje; set => mensaje = value; }
}
}
UserControl1:
namespace WindowsFormsAppInstanciarClaseEnControl
{
public partial class UserControl1 : UserControl
{
CMensajes mensajito;
public UserControl1(CMensajes mensa)
{
InitializeComponent();
mensajito = mensa;
}
private void UserControl1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = mensajito.Mensaje;
}
}
}
Form1
namespace WindowsFormsAppInstanciarClaseEnControl
{
public partial class Form1 : Form
{
CMensajes mensajito = new CMensajes();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
mensajito.Mensaje = textBox1.Text;
UserControl1 usercontrol1 = new UserControl1(mensajito);
}
}
}
问题是它可以正常工作,但是从中间开始我就得到了
变量mensajito
是未声明的,或者从未分配。当我打开Form1 Design
时。当我用Form1
到Form2
做相同的代码时,一切都完美了!
真的,我需要传递类serialport
的实例,但是是相同的。在这里,我只编写一个测试代码来了解我该怎么办?
谢谢。
答案 0 :(得分:0)
对我来说,您应该在User Control构造函数中执行此操作:
public UserControl1(CMensajes mensa)
{
InitializeComponent();
mensajito = new CMensajes();
mensajito = mensa;
}
答案 1 :(得分:0)
我面前没有机器可以进行测试,但是冒着听起来很傻的风险,请尝试向用户控件中添加默认构造函数。
public UserControl1()
{
InitializeComponent();
}
或者尝试在Form构造函数中移动类的实例。