如何在c#中将combobox与可移动驱动程序列表结合起来

时间:2014-08-15 12:28:05

标签: c# combobox

我的代码是:

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();
                }
            }
        }

我想在组合框中显示已安装的可移动磁盘,用户必须选择驱动程序。但是当我执行上面的代码时,即使我已插入可移动驱动器,组合框中也没有任何项目。组合框只显示空白。

1 个答案:

答案 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();
}