我在网上看到很多答案,说明不能以TextBox
内容的方式选择/复制标签的文字,
但潜在原因是什么 Label
的文字无法复制?
Windows本身可以在光标位置下找到文本,那么为什么不能使用WinForm Label
控件?
答案 0 :(得分:7)
为了让用户选择或复制控件的文本,控件必须允许您通过单击或选项卡对控件设置焦点。
根据设计,Label不允许这样做。
标签控件通常用于为控件提供描述性文本。例如,您可以使用Label为TextBox控件添加描述性文本,以通知用户控件中预期的数据类型。
因此,虽然Labels和TextBox都继承自System.Windows.Control,但它们是不同的东西,用于不同的目的。就像橘子和苹果都是水果一样,但不同。
然而,如果您正在创建一个应用程序,并希望拥有看起来像标签的内容,但允许用户选择(但不能编辑)文本,然后您可以使用TextBox并设置以下属性:
Backcolor = Control
ReadOnly = true
BorderStyle = none
如下图所示......
或者,如果您有一个应用程序并希望从标签之类的内容中获取文本,则可以使用Win32 API函数GetWindowText
,如果您知道窗口的句柄,包含文本。在Win32上下文中,“窗口”表示屏幕上的任何不同内容,而不仅仅是您可以使用鼠标拖动的窗口。 WinForms是所有这一切的抽象。
关于获取鼠标光标下窗口的句柄,请参阅this question。