2015-08-09 3 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

заливаю оба поля и нажмите кнопку Auto 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

Теперь я нажимаю вторая кнопка авто anzeigen == показать автомобиль. Я хочу показать дополнительную машину, но если я пишу этот код в методе кнопки:

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

Вы должны создать автомобиль-член в классе, который «создает» оба окна, поэтому обе формы вы открываете «распознавать» автомобиль-член и можете получить доступ к его данным.

Вы можете найти более подробную информацию здесь: https://msdn.microsoft.com/en-us/library/ms173121.aspx

и здесь: https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx

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(); 
} 
Смежные вопросы