gpt4 book ai didi

.net - UITypeEditor 和 IExtenderProvider

转载 作者:行者123 更新时间:2023-12-04 07:12:43 26 4
gpt4 key购买 nike

我有一个扩展器(IExtenderProvider),它扩展了某些类型的
具有附加属性的控件。对于这些属性之一,我有
写了一个 UITypeEditor。到目前为止,一切正常。

扩展器本身也有几个属性,我正在尝试
用作 UITypeEditor 的一种默认设置。我想做的是成为
能够在扩展器本身(不是扩展控件)上设置属性,
当我打开 UITypeEditor 的附加属性之一时
一个扩展控件,我想将 UITypeEditor 中的值设置为该值
扩展器上的属性。

一个简单的例子:ExtenderProvider 有一个属性 DefaultExtendedValue。在表单上,​​我将此属性的值设置为“我的值”。通过提供程序,扩展控件具有一个带有 UITypeEditor 的属性 ExtendedValue。当我打开属性 ExtendedValue 的编辑器时,默认(初始)值应设置为“我的值”。

在我看来,最好的地方是这样做
UITypeEditor.EditValue,就在调用之前
IWindowsFormsEditorService.DropDownControl 或 .ShowDialog。

唯一的问题是我不能(或者我还没有发现如何)捕获
扩展程序提供程序本身在 EditValue 中,读取相关属性的值并将其设置在 UITypeEditor 中。上下文给了我扩展
控制,但在这种情况下这对我没有用。

有什么方法可以实现我正在尝试的目标吗?任何帮助表示赞赏!

谢谢
汤姆

@samjudson:这不是一个坏主意,但不幸的是它并没有让我到达那里。我真的很希望能够为扩展程序提供程序的每个实例单独设置这个默认值。 (对于不同的扩展控件组,我可能在一个表单上有多个不同的值。)

最佳答案

你能自己读取属性吗?

DefaultValueAttribute att = context.
PropertyDescriptor.Attributes.
OfType<DefaultValueAttribute>().
FirstOrDefault();
object myDefault = null;
if ( att != null )
myDefault = att.Value;

我使用 Linq 来简化代码,但您可以在 .Net 1 中做类似的事情

关于.net - UITypeEditor 和 IExtenderProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com