c# - 在 datagridview 中选择行会清除所选对象中的列表
问题描述
这可能是在黑暗中拍摄,但我的代码中似乎有这个奇怪的错误。我有一个系统,它将一堆车辆对象(类称为 Vehicle)VehicleList
存储在 Business 类中。这些车辆中的每一个都有一个称为活动的列表属性,它存储不同类型的Activities
. 目前,我有一个系统,可以将车辆添加到 datagridview 中,我可以在其中选择一条记录,并打开一个表单,其中包含车辆活动列表,我可以在其中添加和删除它们等。这适用于将活动添加到列表中在当前选择的车辆中。我遇到的问题(可能是潜在问题)是,当我打开车辆列表表单并选择车辆以查看其活动列表时,它会从列表中删除所有记录。我进行了一些调试,发现活动一直存储在该车辆的列表中,直到我单击 datagridview 中的一行。
层次结构如下所示:
<Business> //Contains VehicleList
<VehicleList> //Contains Vehicles
<Vehicle> //Contains ActivityList
<ActivityList> //Contains Activities
这是我用来选择一行的方法:
private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
string registration = dataGridViewRegisteredVehicles.Rows[e.RowIndex].Cells[0].Value.ToString();
foreach (Vehicle vehicle in Business.VehicleList)
{
if (vehicle.Registration == registration)
{
_selectedVehicle = vehicle;
}
}
}
else
{
MessageBox.Show("This is not a record", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
其中_selectedVehicle
=
private Vehicle _selectedVehicle;
public Vehicle SelectedVehicle
{
get { return _selectedVehicle; }
set
{
_selectedVehicle = value;
}
}
这是 Vehicle 类中的列表:
private List<Activity> _activityList = new List<Activity>();
public List<Activity> ActivityList
{
get => _activityList;
}
我无法理解为什么单击记录时会清除列表。我在单击 datagridview 中的记录之前检查了列表,它显示了列表中活动数量的正确计数,但是当我之后检查列表时,列表计数为零。有没有人见过这个?
将车辆添加到车辆列表的方法:
Vehicle vehicle = new Vehicle
{
Registration = registration,
Model = model,
Make = make,
Year = int.Parse(year),
Cost = int.Parse(cost)
};
Business.VehicleList.Add(vehicle);
从列表添加到datagridview的方法:
for (int i = 0; i < Business.VehicleList.Count; i++)
{
dataGridViewRegisteredVehicles.Rows.Add(
Business.VehicleList[i].Registration,
Business.VehicleList[i].Model,
Business.VehicleList[i].Make,
Business.VehicleList[i].Year,
Business.VehicleList[i].Cost
);
}
我尝试将 datagridview 数据源设置为列表,但这只是将空单元格添加到 datagridview
解决方案
推荐阅读
- python - 为从 init 方法分配的类函数起别名
- java - 解析响应 xml 并计算 CDATA 中的 XML 元素
- java - 寻找素数的程序。第2章自测schildt java初学者指南
- java - 从 Java 中的 toString 方法捕获异常
- java - 试图获得二维数组中每个元素的平均值
- c - 如何在 Tizen c 程序中正确获取当前日期
- postgresql - 为什么 HangFire 启动过程会因此错误而失败?
- ios - Swift Broadcast Replaykit 停止录制
- javascript - 使用 Switch 语句在 React 中预期的表达式
- python - 2列上的Groupby加上String列上的过滤器