から継承するVehicle
という名前のクラスとという名前のクラスがあります。情報を入力してボタンをクリックすることで、車のオブジェクトを作成できるフォームがあります。この情報はグリッドビューに挿入されます。Car
Vehicle
私がやりたいのは、作成したIDで特定のCarオブジェクトにアクセスすることです。
各車のオブジェクトを識別するためのIDを作成しました。ID 3のCarオブジェクトなど、特定のオブジェクトにアクセスできるようにしたい。
例として、後で特定の車のオブジェクトを選択してクローンを作成できるように、すべての車のIDを入力するコンボボックスがあります。RowsAddedtoをチェックするイベントを使用します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);
}