From 1e12238d9d6ea02f89aa7150f8507c9d8368a429 Mon Sep 17 00:00:00 2001 From: xcd <834800634@qq.com> Date: 星期四, 09 七月 2020 14:29:15 +0800 Subject: [PATCH] 板卡操作配置编辑时传递轴号和轴名称 --- src/Bro.Common.Model/Helper/PropertyConvertHelper.cs | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 97 insertions(+), 2 deletions(-) diff --git a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs index 3117d1e..ab855ea 100644 --- a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs +++ b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs @@ -392,6 +392,100 @@ return true; } } + + public class EnumDescriptionConverter<T> : TypeConverter where T : Enum + { + Dictionary<T, string> itemDict = new Dictionary<T, string>(); + public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) + { + typeof(T).GetEnumNames().ToList().ForEach(e => + { + T temp = (T)Enum.Parse(typeof(T), e); + itemDict[temp] = temp.GetEnumDescription(); + }); + + return new StandardValuesCollection(itemDict.Keys); + } + public override bool GetStandardValuesSupported(ITypeDescriptorContext context) + { + return true; + } + + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) + { + return true; + } + + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + if (sourceType == typeof(String)) + return true; + + return base.CanConvertFrom(context, sourceType); + } + + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + return base.CanConvertTo(context, destinationType); + } + + public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) + { + return base.CreateInstance(context, propertyValues); + } + + /// <summary> + /// + /// </summary> + /// <param name="context"></param> + /// <param name="culture"></param> + /// <param name="value">string</param> + /// <returns></returns> + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + try + { + foreach (string e in typeof(T).GetEnumNames().ToList()) + { + T temp = (T)Enum.Parse(typeof(T), e); + + if (temp.GetEnumDescription() == value.ToString()) + return temp; + } + } + catch (Exception ex) + { + } + + return base.ConvertFrom(context, culture, value); + } + + /// <summary> + /// + /// </summary> + /// <param name="context"></param> + /// <param name="culture"></param> + /// <param name="value">IOItem</param> + /// <param name="destinationType"></param> + /// <returns></returns> + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + { + if (value is T temp) + { + //foreach (KeyValuePair<T, string> pair in itemDict) + //{ + // if (Convert.ToInt32(pair.Key) == Convert.ToInt32(temp)) + // { + // return pair.Value; + // } + //} + + return temp.GetEnumDescription(); + } + + return base.ConvertTo(context, culture, value, destinationType); + } + } #endregion #region UITypeEditor @@ -585,7 +679,8 @@ TextBox tbox = new TextBox { Dock = DockStyle.Fill, - Multiline = true + Multiline = true, + ScrollBars = ScrollBars.Both, }; form.Controls.Add(tbox); @@ -923,7 +1018,7 @@ return base.EditValue(context, provider, value); } - } + } #endregion } -- Gitblit v1.8.0