Label和TextBox之间的(技术)区别是什么?

时间:2016-07-14 14:58:53

标签: c# .net winforms

我在网上看到很多答案,说明不能以TextBox内容的方式选择/复制标签的文字, 但潜在原因是什么 Label的文字无法复制?

Windows本身可以在光标位置下找到文本,那么为什么不能使用WinForm Label控件?

1 个答案:

答案 0 :(得分:7)

为了让用户选择或复制控件的文本,控件必须允许您通过单击或选项卡对控件设置焦点。

根据设计,Label不允许这样做。

  

标签控件通常用于为控件提供描述性文本。例如,您可以使用Label为TextBox控件添加描述性文本,以通知用户控件中预期的数据类型。

因此,虽然Labels和TextBox都继承自System.Windows.Control,但它们是不同的东西,用于不同的目的。就像橘子和苹果都是水果一样,但不同。

然而,如果您正在创建一个应用程序,并希望拥有看起来像标签的内容,但允许用户选择(但不能编辑)文本,然后您可以使用TextBox并设置以下属性:

  • Backcolor = Control
  • ReadOnly = true
  • BorderStyle = none

如下图所示......

A textbox that looks like a label

或者,如果您有一个应用程序并希望从标签之类的内容中获取文本,则可以使用Win32 API函数GetWindowText,如果您知道窗口的句柄,包含文本。在Win32上下文中,“窗口”表示屏幕上的任何不同内容,而不仅仅是您可以使用鼠标拖动的窗口。 WinForms是所有这一切的抽象。

关于获取鼠标光标下窗口的句柄,请参阅this question