.NET TreeView 컨트롤에서 파생 된 C# 클래스에서 here으로 트리 뷰 알림을 처리하는 방법은 무엇입니까? 파생 된 C# 사용자 정의 컨트롤의 Windows 처리 처리
나는 다음과 같은 예를 들어, 클릭 통지를 처리하기 위해 노력 :class ExtendedTreeView : TreeView
{
private const Int32 NM_FIRST = (Int32)(0U - 0U);
private const Int32 NM_CLICK = unchecked((Int32)((UInt32)NM_FIRST - 2U));
protected override void WndProc(ref Message m)
{
if (m.Msg == NM_CLICK)
{
MessageBox.Show("NM_CLICK");
}
base.WndProc(ref m);
}
}
그러나 메시지 상자가 표시되지 않습니다. Win32 API를 사용하여 .NET 컨트롤의 동작을 수정하려고 시도한 것은 처음이므로 무엇이 잘못되는지 전혀 모릅니다.
이러한 알림을 처리하는 올바른 방법입니까?
FYI : .NET TreeView 컨트롤에 클릭 이벤트가 있다는 것을 알고 있습니다. 이것은 단지 첫 번째 테스트 일뿐입니다. 나중에 TVS_EX_MULTISELECT
스타일을 사용하고 싶습니다. TVS_EX_MULTISELECT
이 활성화되면 .NET TreeView 컨트롤이 AfterSelect
이벤트를 발생시키지 않으므로 나중에 TVN_SELCHANGED
및 TVN_ITEMCHANGED
알림의 동작을 조사하려고합니다.
아니요, 부모 제어 장치로 보내고 내 대답을 확인하십시오 ;-) – peenut
@peenut - 예, 부모가 돌려 보냅니다. 스 니펫에서 WM_REFLECT의 사용을 확인하십시오. 순수한 Winforms 구현 세부 사항이지만 api를 래핑하는 클래스 라이브러리에서는 일반적입니다. –
FYI 다른 질문에서 '0x2000'의 추적 http://stackoverflow.com/questions/10637133/wm-reflect-notify-vs-wm-notify/10637914#10637914 –