所以我正在使用Windows窗体,我偶然发现了一个问题,当我按下一个按钮时,一个名为Form2的窗体打开,Form1隐藏..但问题是我需要从Form1继承一个整数变量到Form2,但我无法弄清楚如何做到这一点...... 我试图使Form2继承自Form1,但这使得Form2具有所有控件(文本框,标签等)。那么这样做的正确方法是什么? Maby我已经创建了Form2 ......
以下是表单类的编写方式。
public ref class Form2 : public System::Windows::Forms::Form
{
public ref class Form1 : public System::Windows::Forms::Form
{
我试过
public ref class Form2 : public System::Windows::Forms::Form, public Form1
{
感谢您的关注!
答案 0 :(得分:0)
不允许从两个基类继承。您只能从一个类继承,但可以根据需要实现多个接口。试试这样:
public ref class Form2 : public Form1
{
在您的情况下,您不需要从两个类继承,因为Form1已经继承了System.Windows.Forms.Form,如果Form2继承了Form1,它也自动为System.Windows.Forms.Form类型。< / p>
如果它只是一个变量,两个表单都应该有共同之处,那么为什么要使用继承呢?因为继承通常意味着扩展基类,以便Form2中的所有成员/属性/方法也可用。因为表单必须从System.Windows.Forms.Form继承,所以不能使用任何其他基类。也许您应该考虑使用将公共变量定义为属性的公共接口,然后,两种形式都必须实现该接口。
public interface IMyForm
{
int MyValue { get; set; }
}
public class Form1 : System.Windows.Forms.Form, IMyForm
{
public int MyValue { get; set; }
...
}
public class Form2 : System.Windows.Forms.Form, IMyForm
{
public int MyValue { get; set; }
...
}
抱歉C#语法,希望它变得清楚我的意思。如果您现在有一个方法需要一个具有该公共属性的表单作为参数,例如您可以这样做:
public void DoSomething(IMyForm form)
{
form.MyValue = 5;
}
您可以传递Form1或Form2的实例作为参数。