110,549
社区成员
发帖
与我相关
我的任务
分享
[DbColumn(TableName = "table1", FieldName = "column8")] //<---
[TypeConverter(typeof(MyConverter))]
public string ClassName
{
//...
}
class DbColumnAttribute : Attribute
{
public string TableName { get; set; }
public string FieldName { get; set; }
}
class MyConverter:TypeConverter
{
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
DbColumnAttribute db = context.PropertyDescriptor.Attributes[typeof(DbColumnAttribute)] as DbColumnAttribute; //<---
List<string> lstValues = CommonDropDownValue.GetData(db.TableName, db.FieldName); //<---
return new StandardValuesCollection(lstValues.ToArray());
}
//...
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
//true下拉框不可编辑
return false;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
//true表示显示下拉框
return true;
}
private string strFieldType;
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
CommonParamAttribute Param = context.PropertyDescriptor.Attributes[typeof(CommonParamAttribute)] as CommonParamAttribute;
List<string> lstValues = this.GetData(Param.TableName, Param.FieldName);
return new StandardValuesCollection(lstValues.ToArray());
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public class ValueEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
{
if (context == null || provider == null || context.Instance == null)
{
return base.EditValue(provider, value);
}
IWindowsFormsEditorService _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (_editorService == null)
{
return base.EditValue(provider, value);
}
else
{
//编辑画面
Form fms = new Form();
fms.ShowDialog();
value = 。。。
}
return value;
}
}