【问题标题】:Why the NumericUpDown's Text property is not suggested by Intellisense?为什么 Intellisense 不建议 NumericUpDown 的 Text 属性?
【发布时间】:2017-11-24 10:14:27
【问题描述】:

我注意到all Controls have a Text property。但是,Intellisense 不建议将其用于 NumericUpDown 对象。当手动将其写下来时,它确实可以工作并将NumericUpDown 的值作为字符串返回。这是为什么?

【问题讨论】:

  • 因为它有一个Value 属性,可以将内容保存在正确的域中并帮助您避免编写“字符串类型”代码?

标签: c# controls numericupdown


【解决方案1】:

docs 显示的属性定义为:

[BrowsableAttribute(false)]
[BindableAttribute(false)]
public override string Text { get; set; }

BrowsableAttribute(false) 位(或更可能是 EditorBrowsableAttribute)是对 Intellisense 进行“隐藏”的原因。

为什么要隐藏它?

此 API 支持产品基础架构,并非旨在 直接从您的代码中使用。

【讨论】:

  • 谢谢!但是,如果我有一个获取Control 并使用其文本的方法呢?我必须检查它是否是TextBox,然后使用Text 属性,如果它是NumericUpDown,然后使用Value 属性,谁知道还有什么其他Controls。拥有一个公共属性来获取 Control 的值更有意义!
  • 您必须与 Microsoft 合作。他们编写了控件和文档。
  • 这里的源代码还提到他们已经覆盖它只是为了使它不可浏览:referencesource.microsoft.com/#System.Windows.Forms/winforms/…
  • @Sipo:全部原因是当您不确定自己在做什么时不使用它。你必须阅读文档,你会知道有一个Value 属性。那应该用。否则人们会使用继承的 Text 属性,因为智能感知建议这样做。请注意,Text 通常是控件的标签。他们将来可以扩展此控件以提供标签,Text 仅返回此文本,而 Value 是独立的。如果人们将Text 用作Value,那将会破坏很多代码。请注意,它也是 decimal 而不是 string
  • @Sipo - 什么样的验证?就其本质而言,控件确保其输入是数字的。通过它的一些属性,它强制执行最小值和最大值。哪些可能的验证仅取决于其实际值的文本版本,并且无法通过更具体的控件获得?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
相关资源
最近更新 更多