C#에서 ListView를 비활성화하지만 현재 선택 항목은 계속 표시됩니다.

StackOverflow https://stackoverflow.com/questions/14029

  •  08-06-2019
  •  | 
  •  

문제

ListView 컨트롤이 있는데, 선택하지 않고 선택한 행을 변경하는 것을 허용하지 않는 가장 쉽고 최선의 방법을 찾으려고 합니다. 숨김 선택한 행.

나는 거기에 있다는 것을 안다 HideSelection 하지만 이는 다음과 같은 경우에만 작동합니다. ListView 여전히 활성화되어 있지만 초점이 맞춰지지 않았습니다.ListView가 비활성화된 경우에도 선택 항목을 볼 수 있어야 합니다.

이것을 어떻게 구현할 수 있나요?

도움이 되었습니까?

해결책

ListView 소유자를 그릴 수도 있습니다.그런 다음 항목 선택 여부 또는 ListView 자체 활성화 여부에 관계없이 항목이 어떻게 보이는지 완벽하게 제어할 수 있습니다.DrawListViewItemEventArgs는 ListView에 항목의 개별 부분을 그리도록 요청하는 방법을 제공하므로 관심 있는 부분만 그리면 됩니다.예를 들어 항목의 배경을 그릴 수 있지만 텍스트를 그리는 작업은 ListView에 맡길 수 있습니다.

다른 팁

두 가지 옵션이 있습니다. 선택한 행의 비활성화된 색상을 변경합니다.또는 선택한 행을 제외하고 다른 모든 행을 변경하여 비활성화된 것으로 시뮬레이션합니다.첫 번째 옵션은 분명히 가장 쉽고 두 번째 옵션에는 분명히 몇 가지 추가 보호가 필요할 것입니다.

나는 실제로 이전에 첫 번째 옵션을 수행해 보았는데 꽤 잘 작동했습니다.나중에 프로세스에서 다른 행을 선택할 경우를 대비하여 색상을 기본값으로 다시 변경하는 것을 기억하면 됩니다.

SelectedIndexChanged를 구현하고 다음을 수행하십시오.

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top