首页 > 解决方案 > 如何将属性添加到让用户从列表中选择的自定义组件

问题描述

我正在开发一个自定义组件,现在我需要添加一个在properties windowsVS中可见的公共属性。
此属性必须是用户可以从中选择的值列表。就像一个组合框。
我在谷歌上搜索了很多,并在 SO 上找到了这个问题并尝试了它,但它似乎需要做很多工作,所以我想要一种更优雅的方式。此外,使用此代码,当用户从列表中选择项目时,我没有通知。
所以我发现显示用户可以选择的列表的正确方法(在 VS 的属性窗口中的自定义组件的属性上)就像下面的代码

public enum BUTTONSTYLE { Style_Solid, Style_GradientA, Style_GradientB, Style_Image, Style_Liquid };
BUTTONSTYLE _buttonStyle;

[DefaultValue(BUTTONSTYLE.Style_Solid)]
[Category("Appearance")]
[Browsable(true)]
[Description("Sets style of the button")]
public BUTTONSTYLE newbuttonstyle
{
    get
    {
        return _buttonStyle;
    }
    set
    {
        _buttonStyle = value;
    }
}

虽然这很好用,但我的问题是这需要一个已定义且无法更改的枚举。在我的情况下,值BUTTONSTYLE可以改变。但是不可能更改枚举中的项目。尽管这个答案说可以做到,但我试过了,但没有用。

所以我在想,可能我这样做是完全错误的。
如何以正确的方式将此类属性添加到我的自定义控件中?

为清楚起见,该属性不是组合框,但应该让用户选择一个值,就像它是一个组合框一样

在此处输入图像描述

编辑

为清楚起见,我将尝试换句话说解释我的问题是什么。
我需要一个向用户显示列表的属性,以便他可以从该列表中选择一个项目。
到目前为止,我发现我应该为此使用一个枚举,它将在属性窗口中显示为用户可以从中选择的列表(另见图​​像)。
但是,这对我没有用,因为当我使用枚举时,列表中的项目是在设计时定义的并且无法更改。
在我的例子中,呈现给用户的项目可能会根据其他属性的值而改变。
所以我毕竟不能使用枚举,那么正确的方法是什么?

我希望我的问题现在更清楚了

标签: c#winformscustom-controlscustom-component

解决方案


推荐阅读