Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
C#将windows窗体与已创建的类和控制台链接_C#_Winforms_Console - Fatal编程技术网

C#将windows窗体与已创建的类和控制台链接

C#将windows窗体与已创建的类和控制台链接,c#,winforms,console,C#,Winforms,Console,问题是:当用户单击Add时,如何将用户输入链接到特定的构造函数并创建对象 我如何创建我的项目: 我创建了一个控制台应用程序。名为car的类具有以下属性: 品牌名称 类型 里程 投产日期 数字板 马力 齿轮数 座位数 躯干体积 油耗 2个构造器:1个,除了座位数之外,其他都有。第二,除了齿轮的数量外,其他都有 根据档位或座椅数量增加燃油消耗量的方法 一切正常。我现在创建了一个windows窗体。将输出类型更改为windows窗体而不是控制台 对于windows窗体: 用户必须在两个选项中进行选

问题是:当用户单击Add时,如何将用户输入链接到特定的构造函数并创建对象

我如何创建我的项目:

我创建了一个控制台应用程序。名为car的类具有以下属性:

  • 品牌名称
  • 类型
  • 里程
  • 投产日期
  • 数字板
  • 马力
  • 齿轮数
  • 座位数
  • 躯干体积
  • 油耗
2个构造器:1个,除了座位数之外,其他都有。第二,除了齿轮的数量外,其他都有

根据档位或座椅数量增加燃油消耗量的方法

一切正常。我现在创建了一个windows窗体。将输出类型更改为windows窗体而不是控制台

对于windows窗体:

用户必须在两个选项中进行选择:跑车或家用车。根据用户选择的选项,跑车的所有属性(座椅数量除外)。对于家用车来说,除了档位的数量,其他一切都可以。用户必须填写车辆名称、类型等

然后,用户需要单击名为“添加”的按钮,以查看车辆的消耗量。在项目的后面,我需要创建它,以便用户能够通过键入数字板来删除它

namespace Sportwagens {
    public class Wagen
    {
        string Merk;
        string Type;
        int Aantalkm;
        DateTime Ingebruiknamedatum;
        string Nummerplaat;
        int Pk;
        int Brandstofverbruik;

    public class Sportwagen : Wagen
    {
        int Aantalvitessen;

        public Sportwagen(string merk, string type, int aantalkm, DateTime ingebruiknamedatum, string nummerplaat, int pk, int aantalvitessen, int brandstofverbruik)
        {
            Merk = merk;
            Type = type;
            Aantalkm = aantalkm;
            Ingebruiknamedatum = ingebruiknamedatum;
            Nummerplaat = nummerplaat;
            Pk = pk;
            Aantalvitessen = aantalvitessen;
            Brandstofverbruik = brandstofverbruik;
        }

        public int vermeerderingbrandsotfverbruiksportwagen()
        {
            if (Aantalvitessen >= 6)
            {
                Brandstofverbruik += 2;
            }
            return Brandstofverbruik;
        }
    }

    class Gezinswagen : Wagen
    {
        int Aantalzitplaatsen;
        int Koffervolume;

        public Gezinswagen(string merk, string type, int aantalkm, DateTime ingebruiknamedatum, string nummerplaat, int pk, int aantalzitplaatsen, int koffervolume, int brandstofverbruik)
        {
            Merk = merk;
            Type = type;
            Aantalkm = aantalkm;
            Ingebruiknamedatum = ingebruiknamedatum;
            Nummerplaat = nummerplaat;
            Pk = pk;
            Aantalzitplaatsen = aantalzitplaatsen;
            Koffervolume = koffervolume;
            Brandstofverbruik = brandstofverbruik;

        }

        public int vermeerderingbrandsotfverbruikgezinswagen()
        {

            if (Aantalzitplaatsen >= 7)
            {
                Brandstofverbruik += 1;
            }
            return Brandstofverbruik;
        }
    }

public Wagen()
    {

    }
    public Wagen(string merk, string type, int aantalkm, DateTime ingebruiknamedatum, string nummerplaat)
    {
        Merk = merk;
        Type = type;
        Aantalkm = aantalkm;
        Ingebruiknamedatum = ingebruiknamedatum;
        Nummerplaat = nummerplaat;
    }

如果用户在两个选项之间进行选择时实例化了“car”对象,则只需更改每个构造函数中参数的顺序(假设存在不同类型的参数)

例如,如果一个构造函数是:

public Car(string brandName, string type, double mileage ...)
{
    ...
}
另一个是:

public Car(string brandName, double mileage, string type ...)
{
    ...
}
您可以根据给定参数的顺序强制类使用其中一个参数。然而,这不是一个好的做法

根据您的描述,听起来您应该创建两个“子类”(SportsCar和FamilyCar),并使用继承来实现您的目标或组合。

双击表单编辑器中的“Toevoegen”按钮。这将创建一个类似以下内容的方法:

private void button1_Click(object sender, EventArgs e)
{

}
在方法之外,声明“Wagen”类的实例,如下所示:

Wagen mijnWagen;
然后,在button_click方法中,初始化wagen对象的实例,如下所示:

if (//"Sportswagen is selected")
{
    mijnWagen = new Sportwagen(merk, type etc. as filled in on form);
}
else
{
    mijnWagen = new Gezinswagen(merk, type etc. as filled in on form);
}

现在,单击按钮时,对象mijnWagen将被初始化为他们选择的任何类型的汽车。

谢谢。这对我帮助很大!还有一个问题,我有两个子类,Sportscar和Familycar。如果用户选择例如Sportscar并填写所有其他内容,单击Add,我如何使用用户输入声明和初始化对象?假设Sportscar继承自Car:在按钮单击功能之外声明Sportscar:Sportscar mySportsCar;然后函数应该是这样的:private void button1_click(…){mySportsCar=new Sportscar(brandName等);}根据需要输入参数。如果你把你的代码复制粘贴到上面的问题中,可能会有帮助,这样我就可以看到你在说什么了。我不确定我是否理解正确。因此,如果用户单击按钮,并在表单中插入用户的信息,我想创建一个对象。我知道如何创建一个对象,但我不知道如何使用表单中提供的信息创建一个对象。mySportsCar=newsportscar(用户插入的信息,但如何插入?)我已经在问题中添加了我的代码,并提供了一个链接,指向表单外观的图像。标识符是荷兰语的,如果它能帮你解决我的问题,我也许可以把它改成英语。再次感谢你,丹尼尔。