【问题标题】:C# object of class in different windows form不同窗口形式的类的C#对象
【发布时间】:2015-08-09 09:30:57
【问题描述】:

如果我运行我的项目,我会看到这个窗口:

然后我按下按钮 auto hinzufügen == 添加汽车。这里是方法的代码:

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

现在第二个窗口打开了:

我填写了两个字段并按下按钮auto 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();
    }
}

这是car类的代码:

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。我想显示添加的汽车,但是如果我在按钮方法中编写此代码:

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

我收到一个错误:

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

【问题讨论】:

  • 创建字段car _myCar 并为其赋值

标签: c# winforms


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    这里: https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx

    【讨论】:

      【解决方案3】:

      好吧,你需要做以下事情:

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

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

      向您的 Form1 类添加一个名为 latestAddedCar 的属性:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2020-10-04
        • 1970-01-01
        • 1970-01-01
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多