2011-03-29 27 views

Trả lời

16

Bạn có thể sử dụng thuộc tính ListBoxItem.ForeColor và UseItemStyleForSubItems để làm cho mục trông mờ đi. Sử dụng SystemColors.GrayText để chọn màu chủ đề cho các mục bị vô hiệu hóa. Tránh tắt lựa chọn, nó ngăn người dùng sử dụng bàn phím. Chỉ vô hiệu hóa việc kiểm tra hộp kiểm. Ví dụ:

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e) { 
     // Disable checking odd-numbered items 
     if (e.Index % 2 == 1) e.NewValue = e.CurrentValue; 
    } 
+0

Thanks, điều này làm việc cho tôi nhưng tôi giao e.NewValue để CheckedState.Unchecked vì tôi muốn đảm bảo rằng nó sẽ bị bỏ lại không được kiểm soát ngay cả khi nó không phải là để bắt đầu với. –

-2

Bạn nên đặt thuộc tính Tự động kiểm tra của hộp kiểm sai.

Tự động kiểm tra - Nhận hoặc đặt giá trị cho biết liệu giá trị Séc hoặc CheckState và xuất hiện của CheckBox có được tự động thay đổi khi Hộp kiểm được nhấp hay không.

Thực tế điều này chỉ có thể sử dụng để kiểm soát hộp kiểm.

2

Bạn phải tự cuộn cho riêng mình. Xử lý 's ListViewItemSelectionChanged sự kiện - nếu bạn không muốn có một mặt hàng cụ thể để có thể lựa chọn, thực hiện điều này:

e.Item.Selected = false; 

Bạn có thể làm cho một mục cụ thể xuất hiện unselectable bởi già nó ra, thay đổi màu chữ, vv

1

Tôi đã nhận lời khuyên Hans Passant - cách tiếp cận trực quan tốt trong trường hợp của tôi biểu thị các mục không thể thực hiện được. Đây là mẫu:

'Select all attachements in case user wants to mask or pick and choose 
    For i As Integer = 0 To lstView.Items.Count - 1 
     If Not Scan.SupportedMasking.Contains(Path.GetExtension(lstView.Items(i).Text)) Then 
      lstView.Items(i).ForeColor = SystemColors.GrayText 
      lstView.Items(i).Text += " (No masking supported)" 
      lstView.Items(i).BackColor = SystemColors.InactiveBorder 
      lstView.Items(i).Selected = False 
     Else 
      lstView.Items(i).Selected = True 
     End If 
    Next i 
0

sử dụng hoặc đặt displaymode để xem insted of edit!

public void SetItemEnabled(ListViewItem item, bool enabled) 
{ 
    if (item != null) 
    { 
     List<ListViewControl> lvControls = this.ListViewControls.FindAll(FindListViewControl(item)); 
     foreach (ListViewControl lvControl in lvControls) 
    { 
     if (lvControl.Control != null) 
     { 
     lvControl.Control.Enabled = enabled; 
     } 
     } 
    } 
} 
Các vấn đề liên quan