问题标签 [collectioneditor]

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.

0 投票
1 回答
1502 浏览

vb.net - 通过设计器添加的 VB.Net 项目未反映在代码上

我有一个用户控件,它公开了自定义集合的属性。

这是用户控件中使用的代码。

这是此属性使用的集合类。

这是集合类使用的项目列表

这是实现 Pluntonix 建议的解决方案后设计器代码的样子。

我从设计器中添加了一些项目,并尝试在运行时检索它们,但所有键都设置为 0,值设置为 Nothing。我还需要通过设计器添加的项目的确切列表可用,我怎样才能使它工作,以便通过设计器添加的实际值也存在于运行时。

0 投票
0 回答
336 浏览

c# - 将列表类型设置为自定义创建的类

我在使用属性网格集合编辑器时遇到问题,我正在使用自定义类来设置属性等:

然后我可以使用如下代码:

问题是“Items”属性,我需要使用创建的类,如下所示:

那么 items 属性将类似于以下内容:

但这显然不起作用,我可以创建自己的类并使其以这种方式工作,但我需要它像这样工作,以及类似的东西,以便集合编辑器正确显示属性。

我不得不发布大部分代码,这样你就可以看到我想要做什么。

0 投票
1 回答
298 浏览

c# - 通过设计器编辑器编辑节点时,自定义 TreeView 不显示更改

我有一个派生自TreeNode的TreeNode类,一个派生自TreeView的TreeView类,以及一个自定义树节点集合。当我尝试通过代码添加节点时,节点会正确添加和显示,但是当我尝试通过设计器集合编辑器添加节点时,设计器会生成代码,但不会立即显示更改。我必须构建项目才能显示它们,但节点计数器正在重置。我显然希望它在我单击集合编辑器中的“确定”按钮时立即显示更改。

此外,当它遇到BtnOK_click事件时,它会执行base.Items = array;base.EditValuevalue 设置为的行,array然后触发OnEditValueChanged()。但是,BtnOK_click如果值发生base.EditValue变化,并且当它命中 时,由于某种原因OnEditValueChanged(),值是 null。base.EditValue当我尝试执行类似的行时base.EditValue = array;,它会引发异常:Object reference not set to an instance of an object

以下是相关的集合编辑器方法:

这是TreeNodeClone Method 及其相关方法和类(我不知道这是否会导致问题,因为该方法似乎工作正常):

0 投票
1 回答
771 浏览

c# - 将对象传递给集合编辑器

我正在尝试为 a 构建一个检查列表,该列表ToolStripMenuItem自动处理项目的检查和取消检查,然后我向程序员提供一个事件,允许他们处理接下来发生的事情。如果这样的东西已经存在,我很想知道它在哪里。我已经为我的自定义创建了集合编辑器,ToolStripMenuItem我可以将清单添加到这个清单集合中。我的问题是您像这样创建集合编辑器:

我需要能够将 this 传递给此集合编辑ToolStripMenuItemDropDownitems,因此当您添加新清单并单击清单的 items 属性时,您可以在清单中添加/删除任何已知的 ToolStripMenuItems。传递引用是行不通的,因为所有这些都发生在属性内部,如果答案是反射,我不知道从哪里开始。

0 投票
2 回答
2953 浏览

c# - 添加或删除项目时,如何使 CollectionEditor 触发 CollectionChanged 事件?

我有一个很久以前从某个地方抓取的自定义控件:

当集合中的一个已编辑项目发生更改时,它曾经触发事件,但即使在此集合中添加或删除了某些项目,我也需要它触发。

目前,除了比较创建表单时元素的数量之外,我没有其他想法,并且它已经接近了。

但是我怎样才能访问那个编辑过的集合来获得它的Count价值呢?

我试图访问propertyGrid.SelectedObject,但它是空的,即使它不是,我认为有收藏项,而不是收藏。

0 投票
1 回答
768 浏览

c# - 如何自定义集合编辑器的标题?

我有一个包含几个公共属性的类。我制作了一个包含此类实例的列表。然后我使用 PropertyGrid 使用标准集合编辑器编辑此列表的对象。我发现了如何自定义字段名称,但我仍然无法更改集合编辑器的标题。

例如,我想将“MyItemClass Collection Editor”替换为“My Favorite Item Collection Editor”。

如何更改集合编辑器的标题?

0 投票
1 回答
660 浏览

c# - Xceed 属性网格:集合编辑器未以适当方式扩展

我使用了 Xceed 属性网格。我已使用 Xceed 的集合编辑器在此属性网格中进行集合。

这里的自定义集合编辑器是从 Xceed 集合编辑器派生的。但是什么都没有被覆盖。它只是一个包装类。

Xceed 网站告诉以下展开过程:“PropertyGrid 支持这种情况并允许您深入了解属性的层次结构。要启用此行为,您必须使用 ExpandableObject 属性装饰您的属性”

所以我在我的财产中使用它:

但只有属性的计数显示在扩展中。而不是属性名称和值。

0 投票
2 回答
1880 浏览

c# - 集合编辑器数据在设计时丢失

Collection<T>我正在尝试制作一个带有 a作为属性的 WinForms 用户控件(其中 T 代表一些自定义类)。我已经阅读了很多关于这个主题的内容,但是我不能让它在设计时正常工作(在运行时一切正常)。更准确地说:当我单击属性窗口中的“...”按钮时,集合编辑器显示正常,我可以添加和删除项目。但是当我单击 OK 按钮时,什么也没有发生,当我重新打开集合编辑器时,所有项目都丢失了。当我查看设计器文件时,我看到我的属性被分配为 null,而不是组合集合。我将向您展示最重要的代码:

用户控制:

StepCollection 类:

阶梯类:

自定义集合编辑器:

我已经尝试过的事情:

  • 使 Step 类成为此处所述的组件:http: //www.codeproject.com/Articles/5372/How-to-Edit-and-Persist-Collections-with-Collectio
  • 更改Collection<Step>为继承 System.Collections.CollectionBase 的自定义集合类StepCollection(在之前的代码项目文章中也有描述)
  • 将 DesignerSerializationVisibility 设置为 Content,如下所述:设计时用户控件中的集合编辑器当它设置为 Visible 时,设计器将 null 分配给我的属性;当它设置为内容时,设计者什么也不分配。
  • 我还发现了这个:如何使用可以在设计时编辑的集合制作用户控件?但是 CollectionBase 类已经为我做了这个。
  • 调试了很多,但由于没有例外,我真的不知道出了什么问题。当我向 collectionForm 的关闭事件添加事件侦听器时,即使我在集合编辑器中添加了几个步骤,我也可以看到(collectionForm 的)EditValue 属性仍然为空。但我也不知道这是为什么...

完成这篇文章时,我刚刚发现了这个主题:在设计模式中编辑集合的最简单方法? 这与我遇到的问题完全相同,但是我不能使用建议的答案,因为我不使用标准集合。

0 投票
1 回答
113 浏览

.net - 如何使 CollectionEditor 无模式?

使用 PropertyGrid,如何使单击列表参数时打开的集合编辑器变为无模式而不是模式?

0 投票
1 回答
583 浏览

c# - 在 WinForms 中设置自定义 CollectionEditor 表单的位置

我为 WinForms 控件编写了一个自定义集合编辑器。它的核心代码如下所示:

我需要为集合编辑器表单设置自定义大小和位置,但我找不到这样做的方法。似乎集合编辑器表单始终由 VS 定位到其默认位置。有没有办法做我需要的?