2011-03-29 13 views
10

में .net 3.5 विंडोज़ रूपों में सूचीदृश्य नियंत्रण में किसी आइटम को आप कैसे अक्षम करते हैं मेरे पास "चेकबॉक्स" = सत्य के साथ एक सूचीदृश्य है। क्या उपयोगकर्ता को बॉक्स को चेक करने से रोकने के लिए कुछ आइटम मंद या अक्षम करना संभव है?.net 3.5

उत्तर

16

आइटम सूची मंद होने के लिए आप ListBoxItem.ForeColor और UseItemStyleForSubItems गुणों का उपयोग कर सकते हैं। अक्षम वस्तुओं के लिए थीम रंग चुनने के लिए SystemColors.GrayText का उपयोग करें। चयन अक्षम करने से बचें, यह उपयोगकर्ता को कीबोर्ड का उपयोग करने से रोकता है। केवल चेकबॉक्स जांच अक्षम करें। उदाहरण के लिए:

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

धन्यवाद, यह मेरे लिए काम किया, लेकिन मैं CheckedState.Unchecked को e.NewValue सौंपा क्योंकि मैं सुनिश्चित करने के लिए कि यह अनियंत्रित भले ही यह के साथ शुरू नहीं था छोड़ दिया जाना चाहते थे। –

-2

आपको चेकबॉक्स झूठी की ऑटो चेक संपत्ति सेट करनी चाहिए।

ऑटोचेक - चेकबॉक्स या क्लिकबेट मानों पर चेक या चेकस्टेट मान और चेकबॉक्स की उपस्थिति स्वचालित रूप से बदल जाती है या नहीं, यह मानते हुए एक मान प्राप्त करता है या सेट करता है।

असल में यह केवल चेकबॉक्स नियंत्रण के लिए उपयोग योग्य है।

2

आपको इसके लिए अपना खुद का रोल करना होगा। , यह पता पक्का हो जानेवाला फ़ॉन्ट रंग बदल रहा है आदि द्वारा

e.Item.Selected = false; 

आप किसी विशेष आइटम unselectable प्रकट कर सकते हैं: - संभाल ListView के ItemSelectionChanged घटना यदि आप किसी विशेष आइटम चयन होने के लिए नहीं करना चाहती हैं, तो ऐसा

1

मैंने हंस पासेंट की सिफारिश की - अच्छा दृश्य दृष्टिकोण जो मेरे मामले में गैर-क्रियाशील वस्तुओं को दर्शाता है।

'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

इस प्रयोग या सेट संपादित की देखने पर insted displaymode: यहां एक नमूना है!

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; 
     } 
     } 
    } 
}