问题标签 [propertygrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winforms - 在运行时(动态)将 Editor / EditorAttribute 添加到对象的属性
如何在运行时将 EditorAttribute(编辑器)添加到对象的属性中?
我有My.Settings.ExcludeFiles
,它是由设置设计师创建的Public Property ExcludedFiles() As Global.System.Collections.Specialized.StringCollection
。通过属性网格进行编辑时ExcludedFiles
,“字符串集合编辑器”会生成“未找到类型‘System.String’的构造函数”运行时异常。
我无法更改属性的ExcludeFiles
属性,因为下次进行任何设置更改时它们将被覆盖。因此,我必须在运行时附加/添加 Editor/EditorAttribute。
我想要做的是StringCollectionEditor
在运行时添加,如下所示作为设计时属性。
解决方案
方法#1
您只需添加一次此属性,例如应用程序初始化。
方法#2
更灵活。请参阅下面的 Nicolas Cadilhac在运行时将编辑器/编辑器属性添加到对象的属性中的回答(动态地)。它使用派生的 CustomTypeDescriptor 和 TypeDescriptionProvider 类。您只需添加一次提供程序,例如应用程序初始化。
c# - Cocoa 的属性网格
我在 Cocoa 中没有找到类似 .NET PropertyGrid 类的东西,所以我开始编写自己的版本。我使用来自运行时的信息来获取对象的属性:
这用于在 NSTableView 中获取/设置值:
reflectedObject
使用基本 KVO同步更新:
此解决方案有效,但我有两个问题需要解决:
- 我需要以某种方式模拟 .NET 属性,因此我可以为属性选择正确的编辑器。文本框并不适用于所有情况。
- 每行都有不同的单元格编辑器,因此对于布尔复选框、字符串文本框等。
我仍然是 Cocoa 的初学者,如果我要求一些非常基本的东西,我很抱歉。
更新:我需要这样的东西(图片来自 Xcode->Get Info->Build):
PropertyGridCocoa http://www.adorior.cz/Images/PropertyGridCocoa.png
c# - C# PropertyGrid:更改属性不起作用?
我的World
班级有一个如下所示的属性:
“获得重力!” 当尝试读取该值时,字符串按预期显示PropertyGrid
,但是当我尝试更改重力矢量并按 Enter 时,没有任何反应。为什么不?
我的Vec2
班级有以下属性:
由于以下原因,它们在网格上可见:
我刚刚将这两种方法添加到了Vec2Converter
,现在它可以工作了:
它通过更改字符串表示和单个属性来工作。为什么 thix 会针对具有单个属性的情况修复它?
我认为答案是Vec2
结构,所以当返回World
向量时Gravity
,它按值传递它,然后更改副本,而不是实际的Gravity
向量。
我认为解决方案是保留CanConvertFrom
andConvertFrom
方法。我假设它们使它起作用,因为它们修改了重力向量的字符串表示,然后又更新了实际的重力向量。那个,或者创建Vec2
一个类应该可以工作,但是我现在不能真正测试它,因为我的应用程序非常依赖它是一个结构。
winforms - winforms 属性网格
我是 DOT.NET 的新手...
我正在尝试做:用下面的讲座树构建一个winform我放了一个propertyGrid propertyGrid必须显示Lecture的详细信息:主题,语言和Lectors。我想在集合编辑器中将讲师添加到某些讲座“Lectors Collection”属性
问题:我需要在 new Lector 的构造函数中传递 LectureID 参数,用于将新添加的 Lector 记录(在当前 Lecture 的 Lectors 集合中)连接到他的 Lecture。我怎样才能做到这一点?
c# - propertygrid 中的 TypeConverter 仅从字符串转换,而不是
访问 propertygrid 时,只有 ConvertTo 方法被调用(很多次)。这会正确返回“Foo!” 属性网格中的字符串。当我点击编辑时,我得到一个例外Cannot convert object of type Foo to type System.String.
(不完全是,翻译)。ConvertFrom 方法没有被调用,任何线索为什么?并且错误表明它正在尝试转换为字符串,而不是来自。
我想当我想编辑这个对象时,它必须从 Foo 转换为字符串,并在完成编辑后返回。
字符串转换器类:
正在访问的属性:
c# - 类列表的 C# 属性
我正在尝试在 Visual Studio 的设计器中使用属性网格。
我有一个类列表,我希望开发人员能够在设计时添加这些类,以便用户可以访问额外的功能。
这是我在代码中已有的一些示例代码。问题是当开发人员进入设计模式时,他只能看到列表中有 x 个值,但看不到任何细节。尝试向列表中添加新项目时,会向用户显示错误。
找不到类型“EditorTextBox+SyntaxRegex”的构造函数。
现在代码:
c# - 带有 GenericItems 的 PropertyGrid GenericList
有没有办法在一个对象的 PropertyGrid(和他的 CollectionEditor)中显示和编辑值,该对象派生自一个抽象的泛型类?我没有只显示类似这样的属性:“IFilter´1”或“BaseFilter'1”其中 IFilter 是一个接口,而 BaseFilter 是一个抽象类。
此列表包含的所有对象:
有一个抽象类,实现了 IFilter:
以及 FilterBase 的一些特殊实现
当我将这样的“SimpleBool”类添加到上面定义的列表中时,PropertyGrid 不会显示任何属性。但是当我使用非泛型类型定义泛型列表时,它显示全部正确。
有解决方案来完成这项工作吗?我尝试添加一些 TypeConverter 和一个自己的 CollectionEditor。显然没有运气=(
c# - 如何将 PropertyGrid 集合限制为列表
好的,我已经阅读了一些关于使用 PropertyGrid 和集合的问题。但是,我很难理解如何/如果[TypeConverter]
对我有用。我读过 MSDN 放出的那段小广告,坦率地说,对于这个可怜的自学成才的程序员来说,这有点欠缺。
所以,这就是我所拥有的。首先是一个集合:
集合中的对象:
我有一个 ListView 控件,其中包含描述 ModuleData 对象和 BatchData 对象的项目。当我从 ListView 中选择一个 BatchData 项时,PropertyGrid 将按预期显示集合编辑器。有没有办法将集合编辑器限制为仅在 ListView 控件中列出的任何 ModuleData 项?理想情况下,我不希望将 BatchData 项(来自 ListView)添加到 BatchData 集合中 - 特别是因为集合不是 BatchData 对象类型的“类型化”。
如果需要任何进一步的代码示例,我将非常乐意编辑其中的一些片段。
为清楚起见,ModuleData 是一个自定义类,它保存在指定程序集中实例化类所需的数据。它包含的只是字段和公共/内部属性。我想做的是使用与属性网格控件组装的集合编辑器将 ModuleData 对象添加到 BatchDataModule
集合。符合添加条件的 ModuleData 对象列在 ListView 控件中。
编辑:删除了: List<ModuleData>
继承。
更新:如果我要创建自定义集合编辑器,这是否意味着我正在构建自己的自定义表单/对话框?然后基本上为propertygrid提供信息以通过UITypeEditor的属性和继承来显示我的自定义集合对话框?
c# - 如何以编程方式调整 PropertyGrid 控件的水平分隔线?
我在我的 C# 项目中使用 .NET PropertyGrid 控件。
加载包含网格的表单时,水平分隔符(将设置与描述分开)处于默认位置。如何在 C# 中以编程方式更改该拆分器的位置?
c# - 关于 Marc Gravell 用于将 System.Data.Rows 绑定到 PropertyGrid 的 RowWrapperDescriptor
我遇到了Marc Gravell对 Matt 发布的问题的优雅而机智的解决方案(标题“ C#/winforms: how to best bind a propertygrid and a System.Data.DataRow ”),并在我的一个应用程序中使用了相同的解决方案.
使用 Marc 代码的一些摘录:
我能够以某种方式使用 DataGridView 完成这项工作;DataGridView 使用表作为它的源,而每次单击 DataGridView 上的一行都会被设置为 propertyGrid1 的 SelectedObject (使用 Marc 的 RowWrapper ),并且它工作得很好。你可能会问我为什么要这样做,意思是同时使用 DataGridView 和 PropertyGrid;事实上,业务需求和狭隘的管理政策。
无论如何,我现在有另一个困境;表中的一列,例如“Foo”(顺便说一下,它在 PropertyGrid 中显示为字段之一)应该是 PropertyGrid 中的某种下拉列表。我的意思是,“Foo”应该是一个组合框,其中包含从另一个 DataTable 派生的项目列表。另外,有没有办法为每个字段项包含某种描述?
这可以做到吗?Marc Gravell 提到了类似“请注意,您可以在该区域执行其他操作,以使某些属性不可编辑 (IsReadOnly),或具有不同的标题 (DisplayName) 或类别 (Category) - 通过覆盖 RowWrapperDescriptor 中的其他成员. ”作为他帖子的结尾注释,我想知道有没有办法做到这一点。
非常感谢任何理论建议。非常感谢。