我的代码是:
private void ListOfDrivers_SelectedIndexChanged(object sender, EventArgs e)
{
DriveInfo[] ListDrives = DriveInfo.GetDrives();
foreach (DriveInfo Drive in ListDrives)
{
if (Drive.DriveType == DriveType.Removable)
{
ListOfDrivers.DataSource = ListDrives.ToList();
}
}
}
我想在组合框中显示已安装的可移动磁盘,用户必须选择驱动程序。但是当我执行上面的代码时,即使我已插入可移动驱动器,组合框中也没有任何项目。组合框只显示空白。
答案 0 :(得分:3)
您在自己的DataSource
事件中为ComboBox
加载了SelectedIndexChanged
。该事件仅在选择更改时触发,但它永远不会触发,因为还没有任何项目。
您可以将上述代码移至您的表格Load
活动中,以便立即使用。
此外,如果您有多个可移动驱动器,那么您只会显示最后一个驱动器,因为您在DataSource
循环内覆盖了foreach
。我建议使用LINQ过滤结果:
private void Form1_Load(object sender, EventArgs e)
{
ListOfDrivers.DataSource =
DriveInfo.GetDrives()
.Where(x => x.DriveType == DriveType.Removable)
.ToList();
}