Label控件在目前是无法直接调用成员函数来复制其文本内容。其实网络上有很多热心程序员网民解答过这个问题,百度上也可以搜索到,不过大多数人建议使用 TextBox 并把边框调整为不可见(运行时文本框看起来很像 Label 控件吧),再手动选定文本复制即可。虽然这种方法还不错,但是对于存疑者来说还是差些意思。我前段时间思考出一个还算完美的解决方案,在此记录一下。(可能已经有人实现了,但是笔者仍想强调一下)
思路
具体实现其实很简单:
- 在 Form 类中定义一个私有文本框对象 TextBox (注意只是定义一个对象,不是在窗体设计器中把文本框拖到窗体上面)
- 在窗体加载事件函数中(也可是窗体类的构造函数中)实例化这个 TextBox
- 而后,在鼠标点击事件中将 Label 控件的 Text 属性值赋给 TextBox 的 Text 属性;调用 TextBox 的 SelectAll (全选文本)函数【重要】;最后调用其 Copy (复制文本函数)即可
总结
上述思路可能描述得有些啰嗦了,实质上是创建一个不可见的TextBox对象并且将Label的文本赋给TextBox后再使用TextBox的方法去复制Label里的内容。在程序运行的时候你会发现这正是你想要的效果:“点击按钮后复制了Label的内容”
代码
看看代码就更加了然于心了,因为代码很短,所以笔者截个图就行……
效果图
注意:效果图中的文本框仅作测试用,请勿混淆。