我正在创建一个程序,用户可以选择创建自己的自定义属性,最终将显示在一个PropertyGrid
.现在我不想用自定义编辑器的一塌糊涂,所以我只允许基本类型的属性(string
,int
,double
,DateTime
,bool
等)的PropertyGrid
已经具有内置的编辑器.
但是,我还想让用户选择创建多个选项属性,他们可以定义一个可能的值列表,这些值又会显示为下拉列表PropertyGrid
.
当我Enum
在我的代码中硬编码时,属性网格会自动将其属性显示enum
为下拉列表.但是我可以在运行时创建和/或修改枚举,以便用户可以添加另一个属性选项,然后返回PropertyGrid
并在下拉列表中查看它们的新选项吗?
更新
考虑到帕特里克的评论,我认为Enum
在这种情况下,s不是正确的方法.那么我怎样才能使用字符串列表来填充项目中的下拉PropertyGrid
菜单?这需要自定义编辑器吗?
我有一个PropertyGrid
分配给它的一些对象.
var prpGrid = new PropertyGrid();
prp.SelectedObject = myObject;
Run Code Online (Sandbox Code Playgroud)
我想得到所有网格项,我可以得到selectedGridItem属性:
var selectedProperty = prpGrid.SelectedGridItem;
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?
我正在使用用户控件.我已经创建了自己的控件属性.现在我想在设计器网格中分别对自己的属性进行分组.
怎么实现呢?
问候
我有一个属性网格显示一个列表,例如一个类 Person
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Person
{
public bool ShowHidden { get; set; }
public string Name { get; set; }
//[Browsable(false)]
public string Hidden { get; set; }
public override string ToString()
{
return string.Format("Person({0})", Name);
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是如何控制的Browsable()
在运行时,使得属性时ShowHidden = false
的Hidden
省略线(突出显示下面黄色).
谢谢.
我的任务是显示一个Web表单来表示.NET类中的属性.在WinForms中,有一个名为PropertyGrid的预制控件很像我需要的.我只是想找到一些东西,在适当的控件旁边显示一个简单的属性名称布局,比如字符串的文本框或枚举属性的下拉列表.
这样的事情对于ASP.NET来说是否已经存在,或者我会在这里自己动手?
我有几个字段的System.Data.DataRows,其中大多数只是普通类型,如int,single,string.
使用propertygrid使它们可编辑的最佳方法是什么?无论数据行具有哪种字段,它都应该自动工作,但它不应显示所有字段.我想提供一个应隐藏的属性列表.
由于DataTable是自动生成的,我无法添加自定义属性,如[可浏览(假)]
非常感谢!
PropertyGrid ...对于用户我想只留下几个.但是现在我看到了所有这些,当看到像Dock或Cursor这样的东西时,用户会感到困惑......希望现在很清楚......
有一个标准的WinForms 2.0 PropertyGrid
控件我正在寻找一种方法来改变控件的边框颜色或完全删除边框.
我知道这个LineColor
属性不幸只会改变单元格之间的内部边界.
另外,我使用ILSpy来查看PropertyGrid
控件的源代码,但仍然没有发现对我有意义.
我的问题是:
如何删除PropertyGrid
控件的外边框或更改外边框的颜色?
更新2012-05-04 - 解决方案(又名"hack"):
根据Jamie的回答,我组装了一个工作解决方案(您可以从这里下载):
我们的想法是将属性网格放在面板中,让面板剪切控件.
通过这种方法,我确实将剪切面板放置到另一个具有Padding
"1"(或任何您想要的边框)的面板中,并将此面板BackColor
作为边框颜色(在我的示例中为绿色).
将属性网格的Anchor设置为"Left,Right,Top,Bottom",将Dock
剪切面板设置为"Full".
这适合我的要求.我认为这是一种黑客行为,因为它消耗了两个面板的资源,我希望我可以节省.
问题很简单(我希望这有一个简单的解决方案!):我想隐藏(Browsable(false))属性"Element"(在我的PropertyGrid对象中),当它为零时.
public class Question
{
...
public int Element
{
get; set;
}
}
Run Code Online (Sandbox Code Playgroud) 我刚刚将一些系统升级到Windows 10 Creators Update,我注意到windows窗体PropertyGrid
控件将其标题和条形边距的默认视觉样式更改为深灰色,如下所示:
由于意外的视觉变化大多发生,用户不满意.有没有办法恢复到旧的默认值或可能覆盖默认样式?