gpt4 book ai didi

c# - PropertyGrid 验证

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:46 35 4
gpt4 key购买 nike

我有一个 PropertyGrid。当我输入格式错误的值(即 - 将字符串转换为整数项)时,我收到一条错误消息。如果我单击“确定”,则错误值会一直存在,直到我更改它为止。如果我点击“取消”,原始值又回来了。

我想控制按钮,所以单击“确定”也会设置回原始值,而不是像取消按钮那样显示错误值。

我该怎么做?

最佳答案

我会加入@Crono,你为什么想要你想要的东西?

如果你问我怎样才能删除那个对话框,那么我可以回答使用自己的 TypeConverter:

public class IntConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return true;
}

public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return true;
}

public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if(value is string)
{
// try parse to int, do not throw exception
}
return 0; // always return something
}

public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (destinationType == typeof(string))
return value.ToString();
return base.ConvertTo(context, culture, value, destinationType); // i left it here but it should never call it
}
}

如果你问我想要我自己的对话框来编辑一些东西,那么我会回答使用自己的 UITypeEditor:

public class MyEditor : UITypeEditor
{

public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}

public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
Form1 form1 = new Form1();
form1.ShowDialog();
return form1.SomeProperty;
}
}

用法是

[TypeConverter(typeof(IntConverter))]
[EditorAttribute(typeof(MyEditor), typeof(UITypeEditor))]
public int SomeProperty
{
...
}

但是你想要那个错误对话框(在设置/获取属性时出现异常时显示)并且你想要 Ok 按钮的工作方式与 Cancel 相同。为什么?

关于c# - PropertyGrid 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219139/

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