문제

나는 트 제어를 보여주는 여러 개의 트리 노드에서는 조직 구조.나는 중지하려면 사용자 선택 가장 높은 수준의 노드(이 달성되었을 사용하여 BeforeSelect 이벤트).도를 중지에서 트 강조 최고 수준의 노드를 사용자가 선택하는 경우 그들 즉지 트에서의 배경 색상을 변경하는 노드를 선택하여'니다.

트리는 내가 사용하는 WinForms 버전이 제어합니다.

아래에 소스 코드를 나는 현재 사용하려고 시도하는:

private void tree_BeforeSelect ( object sender, TreeViewCancelEventArgs e )
{
    if ( e.Node.Level == 0 )
    {
        e.Cancel = true;
    }
}

이는 드 노드를 선택한 후에만 두드러진 플래시(~200ms)는 것은 바람직하지 않습니다.

도움이 되었습니까?

해결책

또한 기존의 코드를 추가하는 경우에는 핸들러를 MouseDown 이벤트에서 트리 코드와 노드를 선택합을 사용하여 그것의 위치를 설정할 수 있습 노드습니다.

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
    TreeNode tn = treeView1.GetNodeAt(e.Location);
    tn.BackColor = System.Drawing.Color.White;
    tn.ForeColor = System.Drawing.Color.Black;
}

여전히 약간의 문제는 선택을 개설전에 보여줍니다 MouseDown 하지만 그것이어야를 중지 파란색 배경과 당신을 가져옵니다.

HTH

OneSHOT

다른 팁

이 코드를 방지하기로 선택하기 전에는 취소:

private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
    treeView1.BeginUpdate();
}

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
    treeView1.EndUpdate();
}

으면 선택 취소 설정하여를 취소하는 사실에 BeforeSelect 의 이벤트 args,노드를 선택되지 않고,따라서 배경 색상 변경되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top