В чем разница между TotalFreeSpace и AvailableFreeSpace

Попробовав разные решения, я пришел на этот сайт. Чжоу Юн показывает, как программно расширить все узлы TreeView. В его методе есть две основные идеи:

  • ContainerFromItem вернет контейнер только в том случае, если элемент является прямым дочерним элементом этого элемента. В TreeView это означает, что будет возвращен только дочерний контейнер первого уровня, и вы должны вызвать ContainerFromItem для дочернего TreeViewItem, чтобы получить контейнер с следующего уровня
  • . Для ContainerFromItem для работы с TreeViewItem должны создаваться визуальные дети, и это происходит только тогда, когда TreeViewItem расширен. Это означает, что для выбора TreeViewItem все элементы, предшествующие требуемому элементу, должны быть расширены. На практике это означает, что нам нужно будет указать путь к элементу, который мы хотим выбрать, а не только к элементу.

Вот код, в который я попал

public static void SelectItem(this ItemsControl parentContainer, List path)
{
    var head = path.First();
    var tail = path.GetRange(1, path.Count - 1);
    var itemContainer = parentContainer.ItemContainerGenerator.ContainerFromItem(head) as TreeViewItem;

    if (itemContainer != null && itemContainer.Items.Count == 0)
    {
        itemContainer.IsSelected = true;

        var selectMethod = typeof(TreeViewItem).GetMethod("Select", BindingFlags.NonPublic | BindingFlags.Instance);
        selectMethod.Invoke(itemContainer, new object[] { true });
    }
    else if (itemContainer != null)
    {
        itemContainer.IsExpanded = true;

        if (itemContainer.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
        {
            itemContainer.ItemContainerGenerator.StatusChanged += delegate
            {
                SelectItem(itemContainer, tail);
            };
        }
        else
        {
            SelectItem(itemContainer, tail);
        }
    }
}

23
задан JYelton 14 May 2012 в 19:40
поделиться

2 ответа

Документация по DriveInfo.TotalFreeSpace и по DriveInfo.AvailableFreeSpace сообщает вам соответственно:

Замечания (TotalFreeSpace)

Это свойство указывает общее количество свободного места на диске, а не только то, что доступно текущему пользователю.

Примечания (AvailableFreeSpace)

Это свойство указывает количество свободного места на диске. Обратите внимание, что это число может отличаться от числа TotalFreeSpace , поскольку это свойство учитывает дисковые квоты.

40
ответ дан BoltClock 14 May 2012 в 19:40
поделиться

Согласно MSDN:

TotalFreeSpace

Это свойство указывает общий объем свободного места на диске, , а не только то, что доступно текущему пользователю .

8
ответ дан Tigran 14 May 2012 в 19:40
поделиться