아래와 같이 하나의 폼안에 각각 에디터(SiriusEditorForm) 와 뷰(SiriusViewerForm)을 각각 끌어다 놓습니다. 해당 인스턴스의 이름이 siriusEditorForm1, siriusViewerForm1 으로 생성되었겠지요.
자 그럼, 다음과 같이 하나의 문서 데이타를 에디터및 뷰어에 연결해 줍니다.
public FormMain()
{
InitializeComponent();
SpiralLab.Core.Initialize();
var doc = new DocumentDefault();
siriusEditorForm1.Document = doc;
siriusViewerForm1.Document = doc;
...
}
만약 에디터에서 사용자가 신규 문서(Document)를 열(Open) 경우, 이 변경사항이 뷰어에도 알려져야 동일한 데이타를 기반으로 화면에 출력이 되므로, 아래의 이벤트 핸들러와 같이 구현해 줍니다.
{
...
/// 소스 문서(IDocument) 가 변경될경우 다른 멀티 뷰에 이를 통지하는 이벤트 핸들러 등록
siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged;
...
}
private void SiriusEditorForm1_OnDocumentSourceChanged(object sender, IDocument doc)
{
/// 변경된 문서 소스 업데이트
siriusEditorForm1.Document = doc;
siriusViewerForm1.Document = doc;
}
자 그럼 왼쪽 에디터에서 외부의 DXF 파일을 가져오기(Import) 를 하면, 위와 같이 오른쪽 뷰어에도 해당 데이타가 출력 되는것을 확인할수있습니다. 심지어 왼쪽 편집기에서 개체(Entity)를 이동, 삭제, 추가 등을 해보시면 그 수정사항이 고스란히 오른쪽 뷰어에도 반영이 됩니다. 위 예제에서는 결국 하나의 데이타 문서 소스(Document)를 가지고 여러개의 뷰, 즉 1 Source Multiple View 가 가능함을 보여주고 있습니다.
댓글 없음:
댓글 쓰기