2008-08-17 6 views
7

Tôi có một điều khiển ListView và tôi đang cố gắng tìm ra cách dễ nhất/tốt nhất để không cho phép thay đổi (các) hàng đã chọn, mà không cần ẩn (các) hàng.Vô hiệu hóa một ListView trong C#, nhưng vẫn hiển thị lựa chọn hiện tại

Tôi biết có thuộc tính HideSelection nhưng chỉ hoạt động khi ListView vẫn được bật (nhưng không được tập trung). Tôi cần lựa chọn để có thể xem được ngay cả khi ListView bị tắt.

Làm cách nào để triển khai tính năng này?

Trả lời

2

Bạn cũng có thể thực hiện việc rút chủ sở hữu ListView. Sau đó, bạn có toàn quyền kiểm soát cách các mục tìm kiếm xem chúng có được chọn hay không hoặc cho dù chính ListView được bật hay không. DrawListViewItemEventArgs cung cấp một cách để yêu cầu ListView vẽ các phần riêng biệt của mục, do đó bạn chỉ phải vẽ các bit mà bạn quan tâm. Ví dụ, bạn có thể vẽ nền của mục nhưng để nó lên đến ListView để vẽ văn bản.

1

Có hai tùy chọn, thay đổi màu đã chọn của các hàng đã bị vô hiệu hóa. Hoặc thay đổi tất cả các hàng khác để mô phỏng chúng bị vô hiệu hóa ngoại trừ một hàng đã chọn. Tùy chọn đầu tiên rõ ràng là dễ nhất, và tùy chọn thứ hai rõ ràng là sẽ cần thêm một số bảo vệ.

Tôi đã thực sự thực hiện tùy chọn đầu tiên trước và hoạt động khá tốt. Bạn chỉ cần nhớ để thay đổi màu sắc trở lại mặc định trong trường hợp một hàng khác được chọn sau này trong tiến trình.

0

Triển khai SelectedIndexThay đổi và làm điều này

private void listViewABC_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     listViewABC.SelectedItems.Clear(); 
    }