Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同windows窗体中类的C#对象_C#_Winforms - Fatal编程技术网

不同windows窗体中类的C#对象

不同windows窗体中类的C#对象,c#,winforms,C#,Winforms,如果我运行我的项目,我将获得以下窗口: 然后我按下按钮“自动hinzufügen”=添加汽车。下面是方法的代码: private void button1_Click(object sender, EventArgs e) { addCarcs window = new addCarcs(); window.Show(); } 现在,第二个窗口打开: 我填写这两个字段,然后按下按钮“自动hinzufügen”=添加汽车。 然后我创建了一个类car的新对象。代码如下: pri

如果我运行我的项目,我将获得以下窗口:

然后我按下按钮“自动hinzufügen”=添加汽车。下面是方法的代码:

private void button1_Click(object sender, EventArgs e)
{
    addCarcs window = new addCarcs();
    window.Show();
}
现在,第二个窗口打开:

我填写这两个字段,然后按下按钮“自动hinzufügen”
=添加汽车。 然后我创建了一个类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; 
}
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 showCar_Click(object sender, EventArgs e)
{
    if(latestAddedCar != null)
        latestAddedCar.showCar();
}
现在我又来到主窗口:

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

private void showCar_Click(object sender, EventArgs e)
{
    myCar.showCar();
}
我得到一个错误:


如何在不同窗体之间发送创建的类对象?

您需要在类级别创建属性
Car MyCar{get;set;}'。在构造函数中设置其值,如
MyCar=new Car()
,并在需要Car对象的任何地方访问
MyCar`。

您应该在类中创建一个成员Car,“创建”两个窗口,以便打开的两个窗体都“识别”成员Car,并可以访问其数据

您可以在此处找到更多信息:

在这里:

嗯,您需要执行以下操作:

将名为addedCar的属性添加到addCarcs类:

public class addCarcs : Form
{
    public car addedCar { set; get; }
}
将名为lateStatedCar的属性添加到Form1类:

public class Form1 : Form
{
    public car latestAddedCar { set; get; }
}
将添加逻辑更改为显示对话框

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; 
}
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 showCar_Click(object sender, EventArgs e)
{
    if(latestAddedCar != null)
        latestAddedCar.showCar();
}
将数据输入提交逻辑更改为:

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;
    }
}
最后,从主类Form1访问新添加的属性:

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; 
}
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 showCar_Click(object sender, EventArgs e)
{
    if(latestAddedCar != null)
        latestAddedCar.showCar();
}

创建字段
car\u myCar
并为其赋值