드라이브 (RootDrive) 및 디렉터리로 Treeview를 채우는 다음 코드가 있습니다. 그러나 각 루프 후에 디렉토리 컬렉션을 어떻게 지우나요? 이제 모든 드라이브의 모든 디렉터리 가 각 드라이브에 추가됩니다. finally 문에서 directory.Clear ()를 사용하면 각 드라이브에 디렉터리가 추가되지 않습니다.
static public ObservableCollection<GetDrive> RootDrive = new ObservableCollection<GetDrive>();
public MainWindow()
{
InitializeComponent();
ObservableCollection<GetDirectory>directories = new ObservableCollection<GetDirectory>();
foreach (DriveInfo di in DriveInfo.GetDrives())
{
try
{
foreach (string s in Directory.GetDirectories(di.Name))
{
directories.Add(new GetDirectory(s));
}
}
catch (IOException) //drive is not ready, e.g. DVD drive
{
}
finally
{
RootDrive.Add(new GetDrive(di.Name, directories));
directories.Clear();
}
}
}
}
}
간단히 말해, 대신 지역 변수를 사용하십시오. 그리고 당신은 finally 지시문을 오용하고 있습니다.
static public ObservableCollection<GetDrive> RootDrive = new ObservableCollection<GetDrive>();
public MainWindow()
{
InitializeComponent();
foreach (DriveInfo di in DriveInfo.GetDrives())
{
ObservableCollection<GetDirectory>directories = new ObservableCollection<GetDirectory>();
try
{
foreach (string s in Directory.GetDirectories(di.Name))
{
directories.Add(new GetDirectory(s));
}
}
catch (IOException) //drive is not ready, e.g. DVD drive
{
// Handle it?
}
RootDrive.Add(new GetDrive(di.Name, directories));
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다