我有一個名爲Vehicle
的類和一個名爲Car
的類,它繼承自Vehicle
。我有一個表單,您可以通過填寫一些信息並單擊按鈕來創建汽車對象。這個信息被插入到一個gridview中。訪問方法外的對象的多個實例
我想要做的就是通過我創建的ID訪問一個指定的Car對象。
我創建了一個ID來標識每個汽車物體。我希望能夠訪問某個對象,例如ID爲3的Car對象。
我有一個組合框,我想填充所有車號,以便稍後可以選擇特定的車對象並作爲例子克隆它。我使用一個事件來檢查RowsAdded到DataGridView
。添加一行時,ComboBox
應與car id
一起添加。
我遇到的問題是,如果檢查RowsAdded
,我無法訪問對象testCar
。我試圖在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);
}
的最後一行添加到DataGridView去年汽車爲什麼你必須按一下按鈕和DataGrid突變在'Car'類?那真的是你的代碼是如何組織的,還是在這裏張貼錯誤?將UI與業務邏輯分開。 「Car」類應該對按鈕等概念一無所知。 – Servy
對不起。事件buttonclick不在汽車類內,它完全在不同的類文件中。如果你可以調用它,buttonclick在「main」類文件中。對不起,總共n00b; 9) –