【问题标题】:C# Combo DataBinding to Empty Guid shows 00000000-0000-0000-0000-000000000000C# 组合数据绑定到空 Guid 显示 00000000-0000-0000-0000-000000000000
【发布时间】:2012-08-13 17:25:18
【问题描述】:

您好,我有一个带有 3 个选项的 Combo 窗体,其中它们的值是 Guid,并且具有与所选对象的 DataBinding。

EmployerMemberDefault item = EmployerMemberDefault();
item.GroupUid = Guid.Empty;

cbGroupEmployer.DataBindings.Clear();
cbGroupEmployer.DataBindings.Add("Value", item, "GroupUid");

当我创建一个新对象时,数据绑定到组合的属性设置为 Guid.Empty。如果我编译并运行,当我创建该新对象时,我会在组合中看到“00000000-0000-0000-0000-000000000000”。有什么方法可以在组合中看到空文本而不是 Guid.Empty 值?

谢谢。

【问题讨论】:

  • Guid.Empty 是一个值全为零的 guid。当您ToString() this(当它显示在组合中时会发生这种情况)时,您将得到您所拥有的。如果您希望它显示为空字符串,则需要专门处理此值。
  • ComboBox 没有“Value”属性。

标签: c# winforms


【解决方案1】:

将 source 属性从 Guid 更改为 Guid?/Nullable<Guid> Guid 没有这样做,但它适用于 int/DateTime 和其他不允许 null 的类型。

【讨论】:

    【解决方案2】:

    “00000000-0000-0000-0000-000000000000”是 Guid.ToString 返回的内容。要显示不同的东西,您必须以某种方式翻译该值 - 即绑定到存储 guid 并翻译它的其他东西。

    【讨论】:

    • 确实,为简单起见 +1。 OP 可以有一个自定义类 MyGuid 覆盖 ToString 以测试它是否等于 Guid.Empty 然后返回 String.Empty 或类似的东西。不过有点矫枉过正。
    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多