1- using Syncfusion . WinForms . ListView ;
1+ using Syncfusion . WinForms . ListView . Enums ;
22using System ;
33using System . Collections . Generic ;
4- using System . ComponentModel ;
5- using System . Data ;
64using System . Drawing ;
7- using System . Linq ;
8- using System . Text ;
9- using System . Threading . Tasks ;
105using System . Windows . Forms ;
116
127namespace SfComboBox
@@ -22,32 +17,35 @@ public Form1()
2217
2318 private void DropDownListView_SelectionChanged ( object sender , Syncfusion . WinForms . ListView . Events . ItemSelectionChangedEventArgs e )
2419 {
25- if ( e . AddedItems . Count == this . sfComboBox . DropDownListView . View . Items . Count ( ) )
20+ if ( e . AddedItems . Count == this . sfComboBox . DropDownListView . View . Items . Count )
2621 {
27- foreach ( var value in disableItems )
28- this . sfComboBox . DropDownListView . CheckedItems . Remove ( value ) ;
22+ for ( int i = 0 ; i < this . sfComboBox . DropDownListView . CheckedItems . Count ; i ++ )
23+ {
24+ if ( ( this . sfComboBox . DropDownListView . CheckedItems [ i ] as Details ) . IsEnabled == false )
25+ this . sfComboBox . DropDownListView . CheckedItems . RemoveAt ( i ) ;
26+ }
2927 }
3028 }
3129
3230 private void DropDownListView_ItemChecking ( object sender , Syncfusion . WinForms . ListView . Events . ItemCheckingEventArgs e )
3331 {
34- bool isDisabledItem = disableItems . Contains ( e . ItemData ) ;
35- if ( ( this . sfComboBox . AllowSelectAll == false && isDisabledItem ) || ( e . ItemIndex != 0 && isDisabledItem ) )
32+ bool isItemEnable = ( this . sfComboBox . ComboBoxMode == ComboBoxMode . MultiSelection && this . sfComboBox . AllowSelectAll && e . ItemIndex == 0 ) ? true : ( e . ItemData as Details ) . IsEnabled ;
33+ if ( ! isItemEnable )
3634 {
3735 e . Cancel = true ;
3836 }
3937 }
4038
4139 private void DropDownListView_SelectionChanging ( object sender , Syncfusion . WinForms . ListView . Events . ItemSelectionChangingEventArgs e )
4240 {
43- if ( this . disableItems . Contains ( e . AddedItems [ 0 ] ) )
41+ if ( e . AddedItems . Count > 0 && ! ( e . AddedItems [ 0 ] as Details ) . IsEnabled && e . AddedItems . Count != this . sfComboBox . DropDownListView . View . Items . Count )
4442 e . Cancel = true ;
4543 }
4644
4745 private void DropDownListView_DrawItem ( object sender , Syncfusion . WinForms . ListView . Events . DrawItemEventArgs e )
4846 {
49- bool isDisabledItem = disableItems . Contains ( e . ItemData ) ;
50- if ( ( this . sfComboBox . AllowSelectAll == false && isDisabledItem ) || ( e . ItemIndex != 0 && isDisabledItem ) )
47+ bool isItemEnable = ( this . sfComboBox . ComboBoxMode == ComboBoxMode . MultiSelection && this . sfComboBox . AllowSelectAll && e . ItemIndex == 0 ) ? true : ( e . ItemData as Details ) . IsEnabled ;
48+ if ( ! isItemEnable )
5149 {
5250 e . Style . BackColor = Color . LightGray ;
5351 e . Style . ForeColor = Color . Gray ;
@@ -58,21 +56,26 @@ private void DropDownListView_DrawItem(object sender, Syncfusion.WinForms.ListVi
5856
5957 #region Data Setting
6058
61- List < string > disableItems = new List < string > ( ) { "Asif" } ;
59+ public class Details
60+ {
61+ public string Name { get ; set ; }
62+
63+ public bool IsEnabled { get ; set ; } = true ;
64+ }
6265
63- public List < string > GetData ( )
66+ public List < Details > GetData ( )
6467 {
65- List < string > list = new List < string > ( ) ;
66- list . Add ( "Amir" ) ;
67- list . Add ( "Asif" ) ;
68- list . Add ( "Catherine" ) ;
69- list . Add ( "Cindrella" ) ;
70- list . Add ( "David" ) ;
71- list . Add ( "Ellis" ) ;
72- list . Add ( "Farooq" ) ;
73- list . Add ( "Muhammad" ) ;
74- list . Add ( "Saleem" ) ;
75- list . Add ( "Usman" ) ;
68+ List < Details > list = new List < Details > ( ) ;
69+ list . Add ( new Details { Name = "Amir" , IsEnabled = false } ) ;
70+ list . Add ( new Details { Name = "Asif" } ) ;
71+ list . Add ( new Details { Name = "Catherine" } ) ;
72+ list . Add ( new Details { Name = "Cindrella" } ) ;
73+ list . Add ( new Details { Name = "David" , IsEnabled = false } ) ;
74+ list . Add ( new Details { Name = "Ellis" } ) ;
75+ list . Add ( new Details { Name = "Farooq" } ) ;
76+ list . Add ( new Details { Name = "Muhammad" } ) ;
77+ list . Add ( new Details { Name = "Saleem" } ) ;
78+ list . Add ( new Details { Name = "Usman" } ) ;
7679 return list ;
7780 }
7881
0 commit comments