2011-12-14 4 views
2

C#을 사용하여 EnvDTE.Window 클래스의 SetSelectionContainer 메서드를 호출하는 간단한 예제를 찾고 있습니다.SetSelectionContainer 예제

클래스에 어떤 방식으로 전달해야 하는지를 알고 싶습니다.

나는 실제로 며칠 동안 웹을 검색했으며 원격으로 유용한 것을 찾을 수 없었다.

Window window = _applicationObject.ItemOperations.NewFile(@"General\XML File", "", ""); 
TextSelection selection = (TextSelection) window.Document.Selection; 
selection.SelectAll(); 
selection.Insert("<xml>some xml<xml>", (int)vsInsertFlags.vsInsertFlagsContainNewText); 

object[] container = new[] {"Test1", "Test2"}; 
window.SetSelectionContainer(ref container); 

답변

1

창에 포커스가있을 때마다 속성 창 에 전달되어야하는 객체를 설정합니다. SetSelectionContainer는 CreateToolWindow 메서드으로 생성 된 창에서만 작동합니다. 솔루션 탐색기 및 작업 목록과 같은 다른 도구 창 에는 이미 속성 창에 표시되는 내용 을 설정하는 코드가 있습니다.

SetSelectionContainer 는 창에 포커스가있을 때마다 속성 창 그 개체에 대한 속성을 표시 있도록 창으로 개체를 연결할 수 있습니다. 예를 들어 차트를 표시하는 사용자 지정 도구 창이 있고 차트의 특성을 변경하려면 속성 창에 속성을 표시하려는 경우이 속성을 사용합니다.

SetSelectionContainer에 빈 Variant 값이 전달되면 은 표시된 개체를 제거합니다. 도구 창 이 활성화되어 있고 선택 컨테이너에서 개체를 사용할 수있을 때 개체가 표시됩니다.

Ref.

는 내가 발견 한 무엇을, 당신은이 방법에 대한 개체 배열 매개 변수의 문자열과의 int 같은 간단한 속성을 전달할 수에서 여기에서? Automation and Extensibility for Visual Studio

+0

안녕하세요, 저는 실제로 예제를 찾고 있습니다. 높은 수준의 설명을 제공하는 것은 실제로 도움이되지 않습니다. 예제를 살펴 보았지만 C++ 예제에는 SetSelectionContainer 만 있습니다. 나는 C# 예제를 찾고있다. – phantom

0

샘플을 다운로드 한.

이 작업을 수행하는 실제 트릭은 속성이 변경되었다는 알림 (ITrackSelection.OnSelectChange 통해)을 생성하는 것으로 보입니다.

이 작업 코드는 here입니다.

+0

내 PC에 도착하면 시도 할 것이다. – phantom

+0

예제를 보내 주셔서 감사합니다. 예제가 완전히 관련되어있는 것처럼 보입니다. SetSelectionContainer 메서드를 호출하면 다음 예외가 발생합니다. 지정된 배열이 예상 된 형식이 아닙니다. – phantom

+0

코드로 내 질문을 업데이트했습니다. – phantom