c# - 如何将属性添加到让用户从列表中选择的自定义组件
问题描述
我正在开发一个自定义组件,现在我需要添加一个在properties windows
VS中可见的公共属性。
此属性必须是用户可以从中选择的值列表。就像一个组合框。
我在谷歌上搜索了很多,并在 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
可以改变。但是不可能更改枚举中的项目。尽管这个答案说可以做到,但我试过了,但没有用。
所以我在想,可能我这样做是完全错误的。
如何以正确的方式将此类属性添加到我的自定义控件中?
为清楚起见,该属性不是组合框,但应该让用户选择一个值,就像它是一个组合框一样
编辑
为清楚起见,我将尝试换句话说解释我的问题是什么。
我需要一个向用户显示列表的属性,以便他可以从该列表中选择一个项目。
到目前为止,我发现我应该为此使用一个枚举,它将在属性窗口中显示为用户可以从中选择的列表(另见图像)。
但是,这对我没有用,因为当我使用枚举时,列表中的项目是在设计时定义的并且无法更改。
在我的例子中,呈现给用户的项目可能会根据其他属性的值而改变。
所以我毕竟不能使用枚举,那么正确的方法是什么?
我希望我的问题现在更清楚了
解决方案
推荐阅读
- android - 如何访问自定义对话框中的按钮?
- javascript - 基本功能未使用变量运行,而是在页面加载时运行
- python - Python sybpydb.connect 函数无法传递主机名
- javascript - 使用 slick.js 和 fancybox 3 的响应式画廊
- php - 如何使用 PHP 通过 FastCGI 向 STDERR 发送任意字符串?
- swift - 如何使文本视图在 OSX 中支持字典服务
- android - 材料组件库版本 1.1.0 不工作
- iis - Azure Devops:在 webapp 级别保护部署到本地服务器
- python - 如何在我的表单中呈现多对多额外字段?(例如我的披萨上每种配料的数量)
- c# - 调用存储过程时参数错误的数量或类型错误