/// <summary> /// 绑定集合到ToolStripComboBox /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="toolStripComboBox">ToolStripComboBox</param> /// <param name="bindItemss">要绑定的集合</param> /// <param name="selectedItem">默认选中项,不设置默认选中时该值为null[默认值为null]</param> private static void BindingIEnumerableGenericToToolStripComboBox <T>(System.Windows.Forms.ToolStripComboBox toolStripComboBox, List <FieldInfoEx> bindItemss, T selectedItem = null) where T : class { if (toolStripComboBox == null) { throw new ArgumentNullException(nameof(toolStripComboBox), "目标控件不能为null"); } try { toolStripComboBox.Items.Clear(); if (bindItemss.Count == 0) { return; } int selectedIndex = 0; FieldInfoEx item = null; for (int i = 0; i < bindItemss.Count; i++) { item = bindItemss[i]; if (item.Value == selectedItem || object.Equals(item.Value, selectedItem)) { selectedIndex = i; } toolStripComboBox.Items.Add(item); } toolStripComboBox.SelectedIndex = selectedIndex; } catch (Exception ex) { throw new Exception("绑定值失败", ex); } }
/// <summary> /// 获取ComboBox枚举选中项 /// </summary> /// <typeparam name="T">枚举类型</typeparam> /// <param name="combox">ComboBox</param> /// <returns>选中项枚举值</returns> public static T GetEnumFromComboBox <T>(System.Windows.Forms.ComboBox combox) where T : struct { EnumEx.AssertEnum <T>(); if (combox == null) { throw new ArgumentNullException(nameof(combox), "目标控件不能为null"); } try { FieldInfoEx selectedItem = (FieldInfoEx)(combox.Items[combox.SelectedIndex]); return((T)selectedItem.Value); } catch (Exception ex) { throw new Exception("获取值失败", ex); } }
/// <summary> /// 构造函数 /// </summary> public PropertyGridEnumControl(object value) { InitializeComponent(); if (value == null) { throw new ArgumentNullException(nameof(value)); } Type valueType = value.GetType(); if (!valueType.IsEnum) { throw new ArgumentException(string.Format("类型:{0}不是枚举类型", valueType.FullName)); } List <FieldInfoEx> dbiItems = EnumEx.GetEnumFieldInfoExList(valueType); FieldInfoEx selectedItem = (from item in dbiItems where value.Equals(item.Value) select item).FirstOrDefault(); DropdownBoxHelper.BindingIEnumerableGenericToComboBox <FieldInfoEx>(comboBoxEnum, dbiItems, "Text", selectedItem); }
/// <summary> /// Zwraca wartość wskazującą, czy okno jest modalne (ShowDialog). /// </summary> /// <param name="window">Okno.</param> public static bool IsModal(this Window window) { return(FieldInfoEx.GetValue <Window, bool>(window, "_showingAsDialog")); }
/// <summary> /// 绑定泛型集合到ComboBox /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="combox">ComboBox</param> /// <param name="displayFun">显示的委托,当为null时调用成员的ToString方法的值作为显示值[默认值为null]</param> /// <param name="items">要绑定的集合</param> /// <param name="selectedItem">默认选中项,不设置默认选中时该值为null[默认值为null]</param> public static void BindingIEnumerableGenericToComboBox <T>(System.Windows.Forms.ComboBox combox, Func <T, string> displayFun, IEnumerable <T> items, T selectedItem = null) where T : class { List <FieldInfoEx> bindItems = FieldInfoEx.GenericToDropdownBindingItems <T>(items, displayFun); BindingIEnumerableGenericToComboBox <T>(combox, bindItems, selectedItem); }
/// <summary> /// 绑定集合到ToolStripComboBox /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="toolStripComboBox">ToolStripComboBox</param> /// <param name="items">要绑定的集合</param> /// <param name="displayMember">显示的成员,属性名或字段名,当为null时调用成员的ToString方法的值作为显示值[默认值为null]</param> /// <param name="selectedItem">默认选中项,不设置默认选中时该值为null[默认值为null]</param> public static void BindingIEnumerableGenericToToolStripComboBox <T>(System.Windows.Forms.ToolStripComboBox toolStripComboBox, IEnumerable <T> items, string displayMember = null, T selectedItem = null) where T : class { List <FieldInfoEx> bindItems = FieldInfoEx.GenericToDropdownBindingItems <T>(items, displayMember); BindingIEnumerableGenericToToolStripComboBox <T>(toolStripComboBox, bindItems); }