Label控件在目前是無法直接調用成員函數來復制其文本內容。其實網絡上有很多熱心程序員網民解答過這個問題,百度上也可以搜索到,不過大多數人建議使用 TextBox 並把邊框調整為不可見(運行時文本框看起來很像 Label 控件吧),再手動選定文本復制即可。雖然這種方法還不錯,但是對於存疑者來說還是差些意思。我前段時間思考出一個還算完美的解決方案,在此記錄一下。(可能已經有人實現了,但是筆者仍想強調一下)
思路
具體實現其實很簡單:
- 在 Form 類中定義一個私有文本框對象 TextBox (注意只是定義一個對象,不是在窗體設計器中把文本框拖到窗體上面)
- 在窗體加載事件函數中(也可是窗體類的構造函數中)實例化這個 TextBox
- 而后,在鼠標點擊事件中將 Label 控件的 Text 屬性值賦給 TextBox 的 Text 屬性;調用 TextBox 的 SelectAll (全選文本)函數【重要】;最后調用其 Copy (復制文本函數)即可
總結
上述思路可能描述得有些啰嗦了,實質上是創建一個不可見的TextBox對象並且將Label的文本賦給TextBox后再使用TextBox的方法去復制Label里的內容。在程序運行的時候你會發現這正是你想要的效果:“點擊按鈕后復制了Label的內容”
代碼
看看代碼就更加了然於心了,因為代碼很短,所以筆者截個圖就行……
效果圖
注意:效果圖中的文本框僅作測試用,請勿混淆。