[C#] DataGridView 應用(六) – Copy Column Header

這一篇將實作Copy Column Header的功能


主要的情境是User需要把DataGridView中的資料複製貼上到Excel之中
但發現Ctrl + A 全選、複製、貼上之後,會缺少Column Header
如下圖
2016-12-2-%e4%b8%8b%e5%8d%88-05-08-38
複製貼上到Excel,缺少了Column Header
2016-12-2-%e4%b8%8b%e5%8d%88-05-09-43


方法1
將DataGridView的ClipboardCopyMode,設定為EnableAlwaysIncludeHeaderText
不論複製任何儲存格,皆會連帶Column Header一起複製
如下圖
2016-12-2-%e4%b8%8b%e5%8d%88-05-18-46
複製貼上至Excel,成功包含Column Header
2016-12-2-%e4%b8%8b%e5%8d%88-05-19-51


方法2
若User不希望AlwaysIncludeHeader
可以將ClipboardCopyMode改回EnableWithAutoHeaderText(預設值)
然後將SelectionMode設定為ColumnHeaderSelect

如果有預設的Column,可能會產生下圖錯誤
2016-12-2-%e4%b8%8b%e5%8d%88-05-26-11
原因是必須取消Column的Sort排序功能才行
將Column的SortMode改為NotSortable
下圖是IDE中的設定
2016-12-2-%e4%b8%8b%e5%8d%88-05-28-49
下圖則是程式新增Column的寫法
2016-12-2 下午 05-56-30.png
測試如下,可以成功選取Column Header,並進行複製貼上的動作。
2016-12-2-%e4%b8%8b%e5%8d%88-05-58-57


最後總結一下

  • 方法1
    • DataGridView.ClipboardCopyMode = EnableAlwaysIncludeHeaderText
    • 強制所有複製貼上都包含Column Header
  • 方法2
    • DataGridView.ClipboardCopyMode = EnableWithAutoHeaderText
    • DataGridView.SelectionMode = ColumnHeaderSelect
    • Column.SortMode = NotSortable
    • 只有選取Column Header的時候才會將其包含在內
    • 但必須取消原本預設的排序功能

 

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s