我有一个名为的类Vehicle
和一个名为的类Car
,它继承自Vehicle
. 我有一个表单,您可以在其中通过填写一些信息并单击按钮来创建汽车对象。此信息被插入到网格视图中。
我想要做的是通过我创建它的 ID 访问特定的 Car 对象。
我创建了一个 ID 来识别每个汽车对象。我希望能够访问某个对象,例如 ID 为 3 的 Car 对象。
我有一个组合框,我想用所有的汽车 ID 填充它,以便稍后我可以选择一个特定的汽车对象并克隆它,例如。我使用一个事件来检查 RowsAdded 到DataGridView
. 添加行时,ComboBox
应将 与 一起添加car id
。
我遇到的问题是testCar
在检查RowsAdded
. 我试图在buttonclick
事件之外声明对象实例,然后在事件内部更改该对象,buttonclick
但这不起作用。我在想,也许我需要创建一个对象数组,在其中插入每辆不同的汽车。
这是我的代码:
class Car : Vehicle
{
string carBrand = "";
private static int carID { get; set; }
public int iD { get; set; }
public string CarBrand { get; set; }
public Color CarColor { get; set; }
public Car()
{
carID = 0;
CarBrand = "Volvo";
CarColor = Color.Black;
}
public Car(string vehicleName, int vehicleYear, string carBrand, Color carColor)
{
this.iD = GetNextCarID();
this.VehicleName = vehicleName;
this.VehicleYear = vehicleYear;
this.CarBrand = carBrand;
this.CarColor = carColor;
}
static Car()
{
carID = 0;
}
protected int GetNextCarID()
{
return ++carID;
}
public void button1_Click(object sender, EventArgs e)
{
string inputModell = txtModell.Text;
int inputCarYear = Int16.Parse(txtCarYear.Text);
string inputBrand = cmbCarBrands.SelectedItem.ToString();
Color inputColor = Color.Black;
if (colorDialog1.Color != Color.Black)
{
inputColor = colorDialog1.Color;
}
Car testCar = new Car(inputModell, inputCarYear, inputBrand, inputColor);
int id = testCar.iD;
if (txtModell.Text != string.Empty && txtCarYear.Text != string.Empty)
{
dataGridView1.ColumnCount = 6;
dataGridView1.Columns[0].Name = "ID";
dataGridView1.Columns[1].Name = "Modell";
dataGridView1.Columns[2].Name = "Årtal";
dataGridView1.Columns[3].Name = "Märke";
dataGridView1.Columns[4].Name = "Färg";
dataGridView1.Columns[5].Name = "Orginal/Klon";
int currRow = dataGridView1.Rows.Add(testCar.iD, testCar.VehicleName, testCar.VehicleYear, testCar.CarBrand, "", "Orginal");
DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
cellStyle.BackColor = testCar.CarColor;
dataGridView1.Rows[currRow].Cells[4].Style = cellStyle;
}
}
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
groupBox2.Enabled = true;
cmbCarID.Items.Add(testCar.iD);
}