디자이너 프레임워크 - 스크립트뷰에서 제공하는 트리뷰에서 아이디 찾는 방법.
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 디자이너를 설치하고, 프레임워크로 제품을 개발하는 경우 스크립트의 모든 액션에서 특정 아이디를 가진 모델을 찾고 싶을 수 있습니다. 이 때 윈폼에서 기본 제공하는 TreeNodeCollections의 Find를 사용할 수 있는데요. 이 Find는 TreeNode의 키를 기반으로 찾기 때문에 모델의 아이디를 찾으려면 몇단계를 더 거쳐야 하는 번거로움이 있습니다. 엔지엠 프레임워크는 TreeView를 확장한 TreeViewEx 컨트롤로 만들어져 있습니다. 그리고, 이 안에는 확장 메소드로 제네릭 Find 함수를 제공합니다. 상단에 확장 메소드를 사용하기 위한 using을 추가합니다.
using static NGM.Controls.Krypton.TreeViewExtensions;
아래와 같이 스크립트를 정적으로 만들거나 동적으로 만듭니다.
InitializeComponent();
// isBackground 파라메터를 false로 명시하지 않으면 뷰를 생성하지 않고 백그라운드로 실행됩니다.
sv = new Designer.Component.ScriptView(
new Designer.ComponentDefault.MainView() { Text = this.Text },
Path.Combine(GetDefaultScriptPath(),
"ext test.ngs"), false);
제네릭 타입은 TreeNode와 BaseModel 2가지를 지원합니다. null 체크로 확인이 가능합니다. TreeView의 모든 TreeNode에서 아이디가 "TEST"인 액션을 찾아서 반환합니다. TreeNode는 Windows의 Forms에 정의되어 있으므로 타입을 쉽게 확인할 수 있습니다. Model의 경우 Base가 아닌 생성된 모델을 찾으려면 리플렉션을 사용해야 합니다.
var model = sv.TreeView.Find<NGM.Models.BaseModel>("TEST");
var node = sv.TreeView.Find<TreeNode>("TEST");
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글Foreach 반복에 데이타베이스 테이블을 사용하는 방법. (How to use a database table for a foreach iteration.) 21.07.30
- 다음글엔지엠 플레이어 장시간 실행 시 성능 테스트 및 검증. (메모리, 속도) 21.07.24