这一节我们共同学习下用户控件的下拉式属性设置,可以为用户控件设置属性以下拉框的形式显示出来,效果图如下
这里我们定义一个用户控件,设置一个属性dropdownpropery
代码如下
[csharp]
public partial class uclab : usercontrol
{
public uclab()
{
initializecomponent();
}
private string dropdownpropery="hello";
[description("下拉属性")]
[editor(typeof(droptypedialogeditor),typeof(uitypeeditor))]
public string dropdownpropery
{
get
{
return dropdownpropery;
}
set
{
dropdownpropery = value;
}
}
}
public partial class uclab : usercontrol
{
public uclab()
{
initializecomponent();
}
private string dropdownpropery="hello";
[description("下拉属性")]
[editor(typeof(droptypedialogeditor),typeof(uitypeeditor))]
public string dropdownpropery
{
get
{
return dropdownpropery;
}
set
{
dropdownpropery = value;
}
}
}
接着我们该属性设置一个下拉式编辑器,代码如下
[csharp]
/// <summary>
/// 下拉式编辑器
/// </summary>
public class droptypedialogeditor:uitypeeditor
{
public override uitypeeditoreditstyle geteditstyle(itypedescriptorcontext context)
{
if (context!=null&&context.instance!=null)
{
return uitypeeditoreditstyle.dropdown;//显示下拉箭头
}
return base.geteditstyle(context);
}
public override object editvalue(itypedescriptorcontext context, iserviceprovider provider, object value)
{
system.windows.forms.design.iwindowsformseditorservice editorservice = null;
if (context!=null&&context.instance!=null&&provider!=null)
{
editorservice = (system.windows.forms.design.iwindowsformseditorservice)provider.getservice(typeof(system.windows.forms.design.iwindowsformseditorservice));
if (editorservice!=null)
{
uclab lab =(uclab)context.instance;
ucdrop drop = new ucdrop(lab.dropdownpropery);
editorservice.dropdowncontrol(drop);
value = drop.result;
return value;
}
}
//return base.editvalue(context, provider, value);
return value;
}
}
/// <summary>
/// 下拉式编辑器
/// </summary>
public class droptypedialogeditor:uitypeeditor
{
public override uitypeeditoreditstyle geteditstyle(itypedescriptorcontext context)
{
if (context!=null&&context.instance!=null)
{
return uitypeeditoreditstyle.dropdown;//显示下拉箭头
}
return base.geteditstyle(context);
}
public override object editvalue(itypedescriptorcontext context, iserviceprovider provider, object value)
{
system.windows.forms.design.iwindowsformseditorservice editorservice = null;
if (context!=null&&context.instance!=null&&provider!=null)
{
editorservice = (system.windows.forms.design.iwindowsformseditorservice)provider.getservice(typeof(system.windows.forms.design.iwindowsformseditorservice));
if (editorservice!=null)
{
uclab lab =(uclab)context.instance;
ucdrop drop = new ucdrop(lab.dropdownpropery);
editorservice.dropdowncontrol(drop);
value = drop.result;
return value;
}
}
//return base.editvalue(context, provider, value);
return value;
}
}
以上代码就可以实现,当我们把用户控件拖动到窗体上,设置该属性,就可以以下拉式窗体显示。
如对本文有疑问, 点击进行留言回复!!
Pytorch无法运行在GPU上,提示显卡版本太低的解决方法
【LeetCode】2. 两数相加(链表逆序存储——易) & 445. 两数相加 II(链表正序存储——难:栈)
ML之sklearn:sklearn的make_pipeline函数、RobustScaler函数、KFold函数、cross_val_score函数的代码解释、使用方法之详细攻略
网友评论