2015-08-09 21 views
1

如果我跑我的项目,我得到这个窗口:在不同的窗口窗体类的C#对象

enter image description here

然后我按下按钮汽车hinzufügen == 新增汽车。在这里,方法的代码:

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

现在第二个窗口打开:

enter image description here

我填写这两个字段,然后按下按钮汽车hinzufügen == 新增汽车。 然后,我创建了一个类汽车的新对象。下面的代码:

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; 
} 

现在我的主窗口再次降临:

enter image description here

现在我按第二个按钮auto anzeigen == show car。我想说明的加车,但如果我写这个代码在按钮方法:

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

我得到一个错误:

enter image description here

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

+2

创建场'汽车_myCar'和值分配给本 – Backs

回答

2

你需要创建一个属性Car MyCar { get;set; }' at the class level. Set its value in the constructor like MyCar = new Car()and access the MyCar`无论你需要Car对象。

0

那么,你需要做到以下几点:

添加一个名为addedCar财产addCarcs类别:

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; 
    } 
} 

最后,访问从主类新增加的属性Form1中

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