사용자 지정 작업 창은 어떻게 UI의 반응성을 유지하면서 가시성을 전환할 수 있습니까?
Excel 추가 기능에 피벗 테이블 창과 유사하게 작동하도록 사용자 지정 작업 창을 추가하려고 합니다.
표를 선택하면 사용자 정의 창이 나타나고 사라집니다.이를 위해 사용자 지정 작업 창을 만들었습니다.
this._taskPane = Globals.AddIn.CustomTaskPanes.Add(
new TableTaskPane(),
"FooPane");
this._taskPane.DockPositionRestrict
= MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoHorizontal;
테이블을 선택하면 창이 표시되고 선택 취소하면 창이 숨겨집니다.
ListObject table = AddTable(); // Creates the table and populates with data.
table.Selected += range => this._taskPane.Visible = true;
table.Deselected += range => this._taskPane.Visible = false;
이렇게 하면 창을 표시하고 숨기는 효과를 얻을 수 있지만 안타깝게도 UI에서 약간의 시차가 발생하여 작업 창이 가시성 상태 사이로 전환될 때 커서가 셀 사이에서 "바운스"합니다.
이것은 아마도 세터가.Visible
작업 창에서 전환을 완료할 때까지 속성 블록을 지정합니다.Excel 2013에서는 창밖으로 미끄러져 나가는데 약 500ms가 소요됩니다.
이 동작을 변경할 수 있는 방법이 없습니다. STA 스레드에서 속성 설정을 예약하려고 했지만 동일한 차단이 발생합니다.전환 없이 바로 나타나도록(예: 피벗 테이블 창) 작업 창을 변경할 수 있지만, 작업 창을 변경할 수 있는 항목도 없습니다.
제가 잘못하고 있는 건가요?직접적인 COM이나 다른 미묘하게 숨겨진 동작으로 이를 해결할 수 있는 방법이 있습니까?
창 API를 통해 창 너비를 0으로 설정하거나 Windows API SetWindowPos를 사용하여 실패할 수 있습니다.그럼 가시거리를 바꾸세요.VSTO를 사용하지 않지만 원시 Office Pane 개체를 사용하여 수행할 수 있다는 것을 알고 있습니다.
제어판 -> 시스템 및 보안 -> 시스템 -> 고급 설정 -> 성능 설정 -> 시각적 효과 등 여기에 있는 우스꽝스러운 Windows 애니메이션 기능을 끄면 이 기능(및 성능 향상)을 달성할 수 있습니다.
이 경우에는 이를 끄셔야 할 것 같습니다.
- 창 안의 컨트롤 및 요소를 애니메이션으로 만듭니다.
그러나 이러한 기능은 속도를 높이는 데도 좋습니다.
- 메뉴를 보기로 페이드 또는 슬라이드 이동
- 콤보 상자 열기 슬라이드
- 최소화 및 최대화 시 창에 애니메이션을 적용합니다.
언급URL : https://stackoverflow.com/questions/22610928/how-can-a-custom-task-pane-toggle-visibility-whilst-keeping-the-ui-responsive
'it-source' 카테고리의 다른 글
테마 및 플러그인 설치를 시도하는 바인딩 마운트 볼륨에 대한 도커/워드프레스/디코딩 권한 (0) | 2023.09.18 |
---|---|
클래스 사용 시기 vs.PHP에서의 기능 (0) | 2023.09.18 |
Typecript에 "Class" 타입이 있습니까?"아무것도"가 포함되어 있나요? (0) | 2023.09.18 |
다른 컨테이너에서 도커 컨테이너 액세스 (0) | 2023.09.18 |
변경 유형별 필터 git diff (0) | 2023.09.13 |