該方法也比較簡單,遍歷所有的單元格,若該單元格處於選擇狀態,則獲得 它的文本,然後將所有選擇單元格的文本拼湊起來,並設置到Windows系統剪切板中。
大量的程序使用Windows剪切板交流數據。在.Net中操作剪切板是比較方便的,當我 們進行復制操作時,首先是創建一個DataObject對象,使用它的SetData方法設置數據,然後 使用ClipBoard的SetDataObject方法來向Windows剪切板設置數據。我們可以同時向 DataObject設置多種格式的數據,比如可以同時設置純文本數據,RTF文檔或圖片數據,其他 應用程序會檢索剪切板中的數據格式,從而利用可處理的數據。
當我們進行粘貼操作 時,使用System.Windows.Forms.ClipBoard的GetDataObject方法獲得一個 System.Windows.Forms.IDataObject對象,然後使用IDataObject的GetFormats方法檢索可用 的數據格式,類型System.Windows.Forms.DataFormats的靜態字段預定義了一些數據格式的 名稱,然後可以使用IDataObject的GetData 方法獲得指定格式的數據,如此可以根據獲得的 數據繼續進行操作。
系統預定義顏色
類型SystemBrushes定義了一些系統顏色 的畫刷對象,系統顏色是指Windows操作系統預先定義的標准顏色,包括桌面背景色,窗體顏 色,菜單控件文本顏色,3D邊框中的亮邊框顏色,暗邊框顏色,提示文本顏色和背景色,高 亮度選擇狀態的文本顏色和背景色等等。打開操作系統桌面屬性,可以進入這些系統顏色定 義對話框,該對話框樣式如圖所示。
在進行圖形開發時有時候需 要使用這種系統預定義顏色,這樣使得應用系統的顏色風格和Windows操作系統的整體風格保 持一致,這樣可以獲得和操作系統一致的用戶體驗。
在.Net中,類型SystemBrushes 的一些靜態屬性提供了具有這種系統預定義顏色的畫刷對象,類似的SystemPens的靜態屬性 提供了具有系統預定義顏色的畫筆對象,而SystemColors則提供了這些預定義顏色值。
折射效應
由於該控件可能存在滾動,這就造成一種折射效應。這加大了程序 的復雜度。
在空氣中,光線是直線傳播的,因此手迎著光線直線移動必然能接觸到物 體。但若一個物體在水中,由於折射作用,手迎著光線直線移動也不一定能接觸到物體,因 此人的動作要根據折射的因素進行修正,才能准確的抓住物體。
當用戶界面發生滾動 時也會有類似的折射效應。控件客戶區中顯示了一個圖形,由於發生了滾動,則該圖形在文 檔視圖中的位置不等於在控件客戶區中的位置,兩者存在一個偏移量,這個偏移量就是控件 的滾動量。
在繪圖圖形時,需要將圖形在文檔視圖中的坐標轉換為控件客戶區中的坐 標來模擬這種折射效果,在OnPaint方法的開頭,就調用Graphics的TranslateTrnasform方法 進行坐標轉換,這樣就整體實現了文檔視圖坐標向控件客戶區坐標的轉換。