탐색기구현1 - TreeView를 만들어보자! - 폼 왼쪽의 트리뷰 구현 해야할일 - 내 컴퓨터의 드라이브 목록 뽑아오기 - 윈도우가 로드되었을 때 시스템 드라이브목록 가져오기 - 노드가 확장될 때 서브 디렉토리 목록 가져와서 노드에 추가하기 1. 윈도우가 로드되었을 때 시스템 드라이브 목록 가져오기 void Window1_Loaded(object sender, RoutedEventArgs e) { // Root 드라이브 생성 foreach (string str in Directory.GetLogicalDrives()) { try { TreeViewItem item = new TreeViewItem(); item.Header = str; item.Tag = str; item.Expanded += new ..
WPF에서는 메인스레드에서 생성한 컨트롤에 다른 스레드가 접근하지 못하도록 되어있습니다.(윈폼에서도 그랬나..) 접근하려고 하면 다음과 같은 에러메시지에 직면하죠 : “다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다.” Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { lblStatus.Content = "동작중"; // 해당 소스 })); 다음과 같이 메인 Dispatcher를 통해 라벨내용을 변경시켜주시면 문제없이 돌아갑니다.
#if, #endif 보다는 Conditional Attribute를 이용하라! 기존방법 예제 : #if, #endif 방법 private void Check() { #if DEBUG string name = new StackTrace().GetFrame(1).GetMethod().Name; Trace.WriteLine("Check for Person : "); Trace.WriteLine("called by " + name); #endif } 좋지 않은 점 : 1. Release모드일 때에는 메소드 내용이 포함되지는 않지만 쓸데없는 메소드 호출을 피할 수 없다. 2. 코더의 실수를 유발하여 의도하지 않은 코드가 삽입될 수 있다. 개선시킨 방법 예제 : Conditional Attribute 사용 방법 ..