using System.
Text.
RegularExpressions;
public class ComboBoxEnumItem
{
private object value;
private string toString;
private string displayItem;
public object Value
{
get
{
return value;
}
}
public override string ToString
()
{
return toString;
}
public string DisplayItem
{
get
{
return displayItem;
}
}
public ComboBoxEnumItem
( object value
)
{
this.
value = value;
displayItem = AsciiEscape
( value.
ToString() );
toString = displayItem;
}
private string AsciiEscape
( string value
)
{
if( value ==
null )
return null;
string returnValue = “”;
Regex r =
new Regex
(“0x
[0-9A-Z
]{4}”
);
MatchCollection m = r.
Matches( value
);
Match mtchPrevious =
null;
for( int i =
0; i < m.
count; i++
)
{
int istartindex =
(mtchprevious ==
null ?
0: mtchprevious.
index + mtchprevious.
length );
returnvalue += value.
substring( istartindex, m
[i
].
index - istartindex
);
string strgroup = m
[ i
].
value;
if( strgroup.
startswith(“0x”
) )
{
string strcode = strgroup.
substring(2);
byte bval =
system.
convert.
tobyte( strcode,
16 );
string s =
new string((char)bval,
1);
returnvalue += s;
}
mtchprevious = m
[i
];
}
if ( mtchprevious ==
null )
{
returnvalue += value;
}
else
{
returnvalue += value.
substring( mtchprevious.
index + mtchprevious.
length );
}
return returnvalue;
}
}
//The AsciiEscape method is used to Replace the Ascii characters in our //Enum with the character representation. We do the Ascii characters //because we want our combo to display “Bi- Annual” instead of //“BiAnnual”. Look at the following enum as an example:
public enum PaymentFrequencies
{
Annual =
1,
Bi0x00A00x002D0x00A0Annual =
2,
Quarterly =
4, Monthly =
12,
Fortnightly =
26,
Weekly =
52
}
//Now, all that we need is the following code behind the form to bind our Combobox and we //are away:
private void InitDataBindings
()
{
cboEntity.
DataSource = GetEnumComboDataSource
( PaymentFrequencies
);
cboEntity.
DisplayMember = “DisplayItem”;
cboEntity.
ValueMember = “Value”;
cboEntity.
DataBindings.
Add( “SelectedValue”, LoanLogic, “PaymentFrequency”
);
}
private ArrayList GetEnumComboDataSource
( Type type
)
{
ArrayList comboData =
new ArrayList
();
Array ary =
Enum.
GetValues( type
);
for( int j =
0; j < ary.
length; j++
)
{
comboData.
Add( new ComboBoxEnumItem
( ary.
GetValue( j
) ) );
}
return comboData;
}
// The GetEnumComboDataSource method creates an ArrayList for us to use as a data source for the combobox.