Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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# 通过表单C传递列表的实例_C#_Forms_List - Fatal编程技术网

C# 通过表单C传递列表的实例

C# 通过表单C传递列表的实例,c#,forms,list,C#,Forms,List,我有一个名为Car的类,它使用参数string build、string manufacturer和string color。我还有一个汽车清单,所有的汽车都存放在里面。汽车与数据一起以表格形式显示。一切正常。我有两个表单,一个是显示汽车的主表单,另一个是可以添加新汽车或修改现有汽车的表单 在第一个窗体上,可以右键单击汽车并选择“编辑”。我正在尝试将所选汽车的一个实例从第一个表单传递到第二个表单。它需要1个参数Car selected Car。然而,我发现很难将实例发送到第二个表单,在那里可以修

我有一个名为Car的类,它使用参数string build、string manufacturer和string color。我还有一个汽车清单,所有的汽车都存放在里面。汽车与数据一起以表格形式显示。一切正常。我有两个表单,一个是显示汽车的主表单,另一个是可以添加新汽车或修改现有汽车的表单

在第一个窗体上,可以右键单击汽车并选择“编辑”。我正在尝试将所选汽车的一个实例从第一个表单传递到第二个表单。它需要1个参数Car selected Car。然而,我发现很难将实例发送到第二个表单,在那里可以修改构建、制造商、颜色等。我该怎么办?我已经试了几个小时了,这让我难以置信

我将非常感谢您的帮助,谢谢您抽出时间

编辑:

谢谢你的评论。这里有一些代码,只是一个更详细的解释,我试图完成

我有两种表格: 主窗体-显示汽车及其相应信息。汽车存储在汽车列表中。我有一个Cars类,它需要一系列的构造、制造商和汽车。当前已设置属性。可以在此处选择一辆车,以便以后编辑。或添加新表单

**添加和编辑表单**-如果在主表单上单击了“添加新车”按钮,则此表单允许添加新车,它具有用于构建、制造商和颜色的文本字段。提交此表单后,数据将发送回主表单,然后将其添加到车辆列表中

这就是我寻求帮助的原因-如果用户选择一辆车并单击“编辑”,则会显示“添加和编辑”表单,文本字段中会填充相应的数据,这些数据已经存在于每辆车的“汽车”列表中,因此。。构造、制造商和颜色

在主窗体上,我需要将分配给_SelectedCar的选定汽车发送到添加和编辑窗体,以填充文本字段,以便对其进行编辑

代码: 这是使用1个参数启动CarForm时运行的代码,该参数是从MainForm存储的Car

public partial class CarForm : Form
    {
    Car storedCar;
    bool editMode;
    public  CarForm(Car storedCar):this()
        {
            this.storedCar = storedCar;
            this.Text = "Edit Car";
            editMode = true;
            carBuildText.Text = storedCar.Build;
            carManufacturerText.Text = storedCar.Manufacturer;
            carColour.Text = storedCar.Colour;
        }
}
在MainForm中,当单击编辑按钮时,当前代码将运行,但不起作用。所选的特定车辆被分配给_storedCar

private void editCar_Click(object sender, EventArgs e)
        {
            CarForm carForm = new CarForm(_storedCar)
        }
因此,StoredCar拥有关于汽车的所有信息,包括汽车的构造、制造商和颜色。因此,我只是尝试通过使用汽车数据启动表单,然后从添加和编辑表单访问数据来传递它

我可以从添加和编辑表单添加一辆新车,并将其传递回主表单,但我很难从主表单填充添加汽车表单


很抱歉这篇冗长的文章。

大多数评论者都比我优秀,他们希望你发布代码来帮助分析你在做什么,并给你必要的提示。今天早上我的心情很好,所以我将列出您可以做的事情,但是让您自己去弄清楚如何做,因为没有真正的代码

你有两种方法可以尝试

1.热土豆法。 无论用户在第一个表单中单击哪个元素来选择汽车,如果您直接将该列表绑定到汽车,则可以从该项数据项中获取对汽车的引用。然后你可以把它传给你的第二个表格

分享就是关心 如果无法从列表中引用汽车,或者希望汽车列表在第一个表单之外具有重要意义,则创建第三个静态类来保存该列表。当有人单击第一个表单中的项目时,使用您从该项目中获得的任何标识符,在静态类中找到该项目本身并将其传递给第二个表单


请注意,无论是哪种情况,第一个表单上的UI都可能会或不会立即显示更改,这取决于您是否正在使用数据绑定,如果是,则使用的是什么绑定属性。

两个表单之间的关系是什么?第二张表格是否在特定事件后打开?在这种情况下,您可以通过构造函数将列表或所选项传递给另一个表单


或者,您可以将列表设置为静态字段,以便在所有表单之间共享。您可以使用一个静态字符串变量或保存当前选定项的东西,然后您可以在其他表单中使用它。

是的,这是可能的,我们应该如何提供帮助?WinForms中没有任何特殊的东西会阻止您这样做-只需传递实例即可。或者向我们展示您在代码方面的尝试。这是一件小事,听起来您已经完成了大部分工作。如果是代码,请发布相关部分,并描述您尝试过的内容以及失败的原因。一定要发布一些代码。@Theodoroschatzigannakis我发布了一些代码,很抱歉这么冗长。