Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 属性网格--编辑器省略号不随下拉列表显示_C#_Propertygrid - Fatal编程技术网

C# 属性网格--编辑器省略号不随下拉列表显示

C# 属性网格--编辑器省略号不随下拉列表显示,c#,propertygrid,C#,Propertygrid,在属性网格中,我为属性实现了StringConverter以显示值列表和UITypeEditor以打开表单进行编辑 每一个单独工作都很好。但是,当我将StringConverter和UITypeEditor放在一起时,我看不到用于编辑属性的省略号。 省略号隐藏在下拉列表的箭头下方 有什么想法吗 下面的代码——如果有帮助的话 [Editor(typeof(VideoDeviceEditor), typeof(UITypeEditor))] [TypeConverter(typ

在属性网格中,我为属性实现了StringConverter以显示值列表和UITypeEditor以打开表单进行编辑

每一个单独工作都很好。但是,当我将StringConverter和UITypeEditor放在一起时,我看不到用于编辑属性的省略号。 省略号隐藏在下拉列表的箭头下方

有什么想法吗

下面的代码——如果有帮助的话

       [Editor(typeof(VideoDeviceEditor), typeof(UITypeEditor))]
    [TypeConverter(typeof(VideoDevicesList))]
    public class VideoDevices
    {

    }
    public class VideoDevicesList : System.ComponentModel.StringConverter
    {
        public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            ChannelPropertyConfiguration inst = (ChannelPropertyConfiguration)context.Instance;
            List<string> lgs = new List<string>();

            lgs.Add("Microsoft Life Cam");
            lgs.Add("Logitech Web Cam");

            return new StandardValuesCollection(lgs);
        }
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        {
            return true;
        }
        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
        {
            return true;
        }
    }

    public class VideoDeviceEditor : UITypeEditor
    {
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
        {
            return UITypeEditorEditStyle.Modal;
        }
        public override object EditValue(ITypeDescriptorContext context, System.IServiceProvider provider, object value)
        {
            IWindowsFormsEditorService svc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
            if (svc != null)
            {
                MessageBox.Show("OK");
            }
            return value;
        }
    }
[Editor(typeof(VideoDeviceEditor),typeof(UITypeEditor))]
[类型转换器(类型(视频设备列表))]
公共级视频设备
{
}
公共类视频设备列表:System.ComponentModel.StringConverter
{
公共重写系统.ComponentModel.TypeConverter.StandardValues集合GetStandardValues(ITypeDescriptor上下文)
{
ChannelPropertyConfiguration inst=(ChannelPropertyConfiguration)context.Instance;
List lgs=新列表();
lgs.Add(“Microsoft Life Cam”);
lgs.Add(“罗技网络摄像头”);
返回新的标准值集合(lgs);
}
公共覆盖布尔GetStandardValuesSupported(ITypeDescriptorContext上下文)
{
返回true;
}
public override bool GetStandardValuesExclusive(ITypeDescriptor上下文)
{
返回true;
}
}
公共类视频设备编辑器:UITypeEditor
{
公共重写UITypeEditorEditStyle GetEditStyle(ITTypeDescriptorContext上下文)
{
返回UITypeEditorEditStyle.Modal;
}
公共重写对象EditValue(ITypeDescriptorContext上下文,System.IServiceProvider提供程序,对象值)
{
IWindowsFormsEditorService svc=provider.GetService(typeof(IWindowsFormsEditorService))作为IWindowsFormsEditorService;
如果(svc!=null)
{
MessageBox.Show(“OK”);
}
返回值;
}
}

我认为不可能同时拥有标准值列表和模式编辑器。你必须选择一个。我认为不可能同时拥有标准值列表和模式编辑器。你必须选择一个。我认为不可能同时拥有标准值列表和模式编辑器。你必须选择一个。