c# treeview 예제

난 그냥 당신이 얻을 유연성의 종류를 보여주기 위해, 여기에 것들의 전체 무리를했다 : 나는 자식 항목을 착색하고 나는 부모 항목에 이미지와 심지어 버튼을 추가. 간단한 태그로 모든 것을 정의하기 때문에 거의 모든 작업을 수행 할 수 있지만 예제 코드에서 볼 수 있듯이 총 6 개의 노드가있는 트리에 대한 엄청난 양의 XAML 코드가 제공됩니다. 위의 예제에서와 마찬가지로 태그를 사용하여 전체 TreeView를 정의하는 것은 전적으로 가능하지만 대부분의 경우 가장 좋은 방법은 아니며 코드 뒤에서 대신 코드 뒤에서 수행할 수 있지만 더 많은 코드 줄이 생겼을 것입니다. 다시 한 번 해결책은 데이터 바인딩이며, 다음 장에서 살펴보겠습니다. 헤더는 흥미로운 속성, 하지만. 당신이 볼 수 있듯이, 난 그냥 텍스트 문자열을 지정 하 고 다른 작업을 수행 하지 않고 직접 렌더링 할 수 있습니다., 하지만 이것은 WPF 우리에 게 좋은-내부적으로, 그것은 TextBlock 컨트롤의 내부 텍스트를 래핑, 대신 그것을 수행 하도록 강요. 이것은 우리가 단지 문자열 대신 헤더 속성에 원하는 거의 모든 것을 물건을 하고 TreeView가 렌더링하도록 할 수 있다는 것을 보여줍니다 – WPF 컨트롤의 모양을 사용자 정의하는 것이 그렇게 쉬운 이유의 좋은 예입니다. 트리뷰 컨트롤의 fullpath 메서드는 루트 노드에서 선택한 노드로의 경로를 제공합니다. 이전 문서에서 언급했듯이 WPF TreeView는 코드 숨김또는 XAML에서 직접 선언하여 TreeViewItem 개체를 추가하여 매우 간단한 방식으로 사용할 수 있습니다. 여기에서 볼 수 있듯이 첫 번째 태그가 TreeView 컨트롤및 해당 하위 ob의 자식인 XAML에서 직접 TreeViewItem 개체를 표시하려는 동일한 구조로 선언합니다. jects는 상위 개체에 대한 자식 태그이기도 합니다. 각 노드에 대해 표시할 텍스트를 지정하려면 Header 속성을 사용합니다. 기본적으로 TreeViewItem확장 되지 않습니다 하지만 예제의 구조를 표시 하기 위해 두 부모 항목을 확장 하는 IsExpanded 속성을 사용 했습니다.

AfterCheck 또는 AfterCheck 이벤트 내에서 TreeNode.Checked 속성을 설정하면 이벤트가 여러 번 발생하여 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 사용자가 각각을 개별적으로 확장하고 확인할 필요가 없도록 자식 노드를 재귀적으로 업데이트할 때 이벤트 처리기에서 Checked 속성을 설정할 수 있습니다. 이벤트가 여러 번 발생하지 않도록 하려면 TreeViewEventArgs의 Action 속성이 TreeViewAction.Unknown으로 설정되지 않은 경우에만 재귀 코드를 실행하는 이벤트 처리기에 논리를 추가합니다. 이 작업을 수행하는 방법에 대한 예제는 AfterCheck 또는 BeforeCheck 이벤트의 예제 섹션을 참조하십시오. Form 클래스 생성자는 TreeView 컨트롤에서 주 노드를 만듭니다. 런타임 시 사용자는 이 노드(또는 이 노드에서 시작된 모든 자식 노드)를 선택하여 TreeView에 추가 노드를 추가할 수 있습니다. 양식 클래스에는 컨텍스트 메뉴도 포함되어 있습니다. 이 컨텍스트 메뉴에는 두 가지 옵션이 포함되어 있습니다. 하나는 새 노드를 추가하고 다른 노드는 기존 노드를 삭제합니다.

새 노드가 요청되면 응용 프로그램이 새 노드 대화 상자의 인스턴스를 엽니다. 이 대화 상자는 사용자가 새 노드의 이름, 텍스트 및 태그 값을 설정하도록 합니다. 태그 값은 모든 개체일 수 있지만 이 예제에서는 태그가 추가 문자열 값을 보유하도록 제한됩니다. 대화 상자에서 값이 수집되면 새 노드가 정보로 채워지고 TreeView의 선택한 노드에 추가됩니다. WinForms 또는 다른 UI 라이브러리에서 오는 사람들의 일반적인 요청 중 하나는 TreeView 항목의 텍스트 레이블 옆에 이미지를 표시 하는 기능입니다.

カテゴリー: 未分類   パーマリンク

コメントは受け付けていません。