
自定义控件的属性点击选择可执行程序是个难点。
1.点击选择程序,再次点击执行程序。
[Description("设置执行程序")] //显示在属性设计视图中的描述
[Editor(typeof(MyEditor), typeof(UITypeEditor))]
public string SelectExe
{
get
{ return selectExe; }
set
{
if (File.Exists(value))
{
picExeImg.Image = GetIconByFileName(value, true).ToBitmap();
lblExeName.Text = Path.GetFileName(value);
}
selectExe = value;
picExeImg.Tag = value;
}
}
public class MyEditor : UITypeEditor
{
private IWindowsFormsEditorService editorService = null;
public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(
ITypeDescriptorContext context,
IServiceProvider provider,
object value)
{
if (provider != null)
{
editorService =
provider.GetService(typeof(IWindowsFormsEditorService))
as IWindowsFormsEditorService;
}
if (editorService != null)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "请选择执行程序";
ofd.Filter = "可执行文件 (*.exe)|*.exe";
ofd.FileName = value.ToString();
if (ofd.ShowDialog() == DialogResult.OK)
{
value = ofd.FileName;
}
}
return value;
}
public override bool GetPaintValueSupported(
ITypeDescriptorContext context)
{
return false;
//return true;
}
public override void PaintValue(PaintValueEventArgs e)
{
//TODO:
}
}




近期评论