繁体   English   中英

不同Windows形式的C#类的对象

[英]C# object of class in different windows form

如果运行项目,则会显示以下窗口:

在此处输入图片说明

然后,我按下按钮autohinzufügen == add car 下面是该方法的代码:

private void button1_Click(object sender, EventArgs e)
{
    addCarcs window = new addCarcs();
    window.Show();
}

现在第二个窗口打开:

在此处输入图片说明

我填写了两个字段,然后按了按钮autohinzufügen == add car 然后,我创建了class car的新对象。 这里的代码:

private void button1_Click(object sender, EventArgs e)
{
    if((kennzeichen.Text != "") && (automarke.Text != ""))
    {
        car myCar = new car();
        myCar.addCar(kennzeichen.Text, automarke.Text);
        this.Close();
    }
}

这是汽车类的代码:

class car
{

    public car()
    {
        this.carMark = "";
        this.carMark = "";
    }

    public void addCar(string carMark, string carBrand)
    {
        this.carMark = carMark;
        this.carBrand = carBrand;
        carNumber++;
    }

    public string showCar()
    {
        return string.Format(
            "Automarke: {0} --- Autokennzeichen {1}", this.carBrand, this.carMark);
    }

    private string carMark;
    private string carBrand;
    static int carNumber; 
}

现在,我再次来到主窗口:

在此处输入图片说明

现在,我按下第二个按钮auto anzeigen == show car 我想显示添加的汽车,但是如果我在button方法中编写以下代码:

private void showCar_Click(object sender, EventArgs e)
{
    myCar.showCar();
}

我收到一个错误:

在此处输入图片说明

如何在不同形式之间发送类的已创建对象?

您需要创建一个Property Car MyCar { get;set; }' at the class level. Set its value in the constructor like Car MyCar { get;set; }' at the class level. Set its value in the constructor like Car MyCar { get;set; }' at the class level. Set its value in the constructor like MyCar = new Car() and access the Car MyCar { get;set; }' at the class level. Set its value in the constructor like and access the在需要Car对象的任何地方and access the MyCar`。

您应该在“创建”两个窗口的类中创建一个成员汽车,以便两种形式都可以“识别”成员汽车,并可以访问其数据。

您可以在这里找到更多信息: https : //msdn.microsoft.com/en-us/library/ms173121.aspx

此处: https//msdn.microsoft.com/en-us/library/ba0a1yw2.aspx

好吧,您需要执行以下操作:

在您的addCarcs类中添加一个名为addedCar的属性:

public class addCarcs : Form
{
    public car addedCar { set; get; }
}

将一个名为latestAddedCar的属性添加到您的Form1类中:

public class Form1 : Form
{
    public car latestAddedCar { set; get; }
}

将添加逻辑更改为ShowDialog

private void button1_Click(object sender, EventArgs e)
{
    addCarcs window = new addCarcs();
    DialogResult dResult = window.ShowDialog();

    if (dResult == System.Windows.Forms.DialogResult.OK)
    {
        latestAddedCar = window.addedCar;
    }
}

将您的数据输入提交逻辑更改为:

private void button2_Click(object sender, EventArgs e)
{
    if ((kennzeichen.Text != "") && (automarke.Text != ""))
    {
        car myCar = new car();
        myCar.addCar(kennzeichen.Text, automarke.Text);
        this.DialogResult = System.Windows.Forms.DialogResult.OK;
    }
}

最后,从Main类Form1中访问新添加的Attribute:

private void showCar_Click(object sender, EventArgs e)
{
    if(latestAddedCar != null)
        latestAddedCar.showCar();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM