public static void SetDataToEnumsPrimitive <T>(this ComboBox combo, StringFromEnumArgs <T> getStringFromEnum) where T : struct, IConvertible { //Make sure the IConvertibleType is actually an enum. if (!typeof(T).IsEnum) { throw new Exception("T must be an Enum type"); } List <T> list = Enum.GetValues(typeof(T)).Cast <T>().ToList(); SetDataToEnumsPrimitive <T>(combo, list, 0, list.Count - 1, getStringFromEnum); }
public static void SetDataToEnums <T>(this ComboBox combo, bool includeAllAtTop, bool showValueIndDisplay = true, int min = -1, int max = -1, StringFromEnumArgs <T> getStringFromEnum = null) where T : struct, IConvertible { //Make sure the IConvertibleType is actually an enum. if (!typeof(T).IsEnum) { throw new Exception("T must be an Enum type"); } SetDataToEnums <T>(combo, Enum.GetValues(typeof(T)).Cast <T>().ToList(), includeAllAtTop, showValueIndDisplay, min, max, getStringFromEnum); }
public static void SetDataToEnumsPrimitive <T>(this ComboBox combo, List <T> enumValues, int min = -1, int max = -1, StringFromEnumArgs <T> getStringFromEnum = null, BoolFromEnumArgs <T> includeEnumValue = null) where T : struct, IConvertible { List <ComboItem <T> > listItems = new List <ComboItem <T> >(); enumValues.ForEach(x => { int val = Convert.ToInt32(x); if (min >= 0 && val < min) { return; } if (max >= 0 && val > max) { return; } if (includeEnumValue != null) { if (!includeEnumValue(x)) { return; } } string display = x.ToString(); if (getStringFromEnum != null) { display = getStringFromEnum(x); } listItems.Add(new ComboItem <T>() { Value = x, Display = display }); }); //Try to retrain previous selection. int selIdx = -1; //if(combo.SelectedItem!=null && (combo.SelectedItem is ComboItemIntValue)) { // selIdx=listItems.FindIndex(x => x.Value==((ComboItemIntValue)combo.SelectedItem).Value); //} BindingList <ComboItem <T> > binder = new BindingList <ComboItem <T> >(listItems); combo.DataSource = binder; combo.ValueMember = "Value"; combo.DisplayMember = "Display"; //combo.DataSource=listItems; if (selIdx >= 0) { combo.SelectedIndex = selIdx; } }
public static void SetDataToEnums <T>(this ComboBox combo, List <T> enumValues, bool includeAllAtTop, bool showValueIndDisplay = true, int min = -1, int max = -1, StringFromEnumArgs <T> getStringFromEnum = null) where T : struct, IConvertible { List <ComboItemIntValue> listItems = new List <ComboItemIntValue>(); if (includeAllAtTop) { listItems.Add(new ComboItemIntValue() { Value = -1, Display = "All" }); } enumValues.ForEach(x => { int val = Convert.ToInt32(x); if (min >= 0 && val < min) { return; } if (max >= 0 && val > max) { return; } string display = (showValueIndDisplay?(Convert.ToInt32(x).ToString() + " - "):"") + x.ToString(); if (getStringFromEnum != null) { display = getStringFromEnum(x); } listItems.Add(new ComboItemIntValue() { Value = Convert.ToInt32(x), Display = display }); }); //Try to retrain previous selection. int selIdx = -1; if (combo.SelectedItem != null && (combo.SelectedItem is ComboItemIntValue)) { selIdx = listItems.FindIndex(x => x.Value == ((ComboItemIntValue)combo.SelectedItem).Value); } combo.ValueMember = "Value"; combo.DisplayMember = "Display"; combo.DataSource = listItems; if (selIdx >= 0) { combo.SelectedIndex = selIdx; } }
public static void SetDataToEnumsPrimitive <T>(this ComboBox combo, int min = -1, int max = -1, StringFromEnumArgs <T> getStringFromEnum = null, BoolFromEnumArgs <T> includeEnumValue = null) where T : struct, IConvertible { //Make sure the IConvertibleType is actually an enum. if (!typeof(T).IsEnum) { throw new Exception("T must be an Enum type"); } SetDataToEnumsPrimitive <T>(combo, Enum.GetValues(typeof(T)).Cast <T>().ToList(), min, max, getStringFromEnum, includeEnumValue); }