ComboBox, который показывает все съемные устройства - PullRequest
0 голосов
/ 28 июля 2010

У меня есть поле со списком (ItemsSource = "{Binding Path = AvailableDrives}").

Свойство AvailableDrives определяется следующим образом:

 public List<DriveInfo> AvailableDrives
    {
        get
        {
            return DriveInfo.GetDrives().Where(x => x.DriveType == DriveType.Removable).ToList();
        }
    }

Работает нормально, но мне бы хотелось, чтобы, если я подключил / вынул USB-устройство, поле comboBox было заполнено без необходимости закрывать и открывать окно.

Как мне этого добиться?

# * спасибо * 1010

Ответы [ 3 ]

3 голосов
/ 28 июля 2010

Вот хороший пример того, как это сделать на codeproject: Определение удаления USB-накопителя в программе на C #

1 голос
/ 17 мая 2011

Как отмечалось в Prize, самым простым решением будет использование DriveDetector или аналогичного.Вот пример:

    public void InitDriveDetector()
    {
        this.dd = new DriveDetector(); // create the drive detector
        // add new event handlers
        dd.DeviceArrived += new DriveDetectorEventHandler(dd_DeviceArrived);
        dd.DeviceRemoved += new DriveDetectorEventHandler(dd_DeviceRemoved);
    }

    void dd_DeviceRemoved(object sender, DriveDetectorEventArgs e)
    {
        Debug.WriteLine("{0} removed",e.Drive);
        //Will output something like "H:\ removed"
    }

    void dd_DeviceArrived(object sender, DriveDetectorEventArgs e)
    {
        Debug.WriteLine("{0} arrived",e.Drive);
        //Will output something like "H:\ removed"
    }
1 голос
/ 28 июля 2010

Простым способом будет поставить таймер на форму и запросить диски, когда его событие сработает. Затем обновите поле со списком новыми значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...