ReoGrid是一款免費並且開源的表格控件,兼容Excel。winform和WPF中都可以使用。
在winform中使用該控件時,首先需要下載dll,在工具--NuGet包管理器--管理解決方案的NuGet程序包中,找到unvell.ReoGrid.dll進行下載(WPF版下載unvell.ReoGridWPF.dll)。
下載完成之后,在工具箱中選擇一個選項卡(例如報表)右鍵點擊選擇項,在彈出的窗體中點擊.NET Framework組件,瀏覽,選擇剛才下載的unvell.ReoGrid.dll,勾選上ReoGridControl點擊確定,工具箱中就有ReoGridControl控件,拖動即可使用。
在使用控件時,首先需要設置一下鼠標樣式,該控件默認的鼠標樣式與其他控件不一樣,需要在Designer.cs文件中手動修改。
this.rightReoGrid.CellsSelectionCursor = System.Windows.Forms.Cursors.Default;
可以直接使用該控件進行表格展示,也可以根據業務需求進行重繪表格,這里主要記錄重繪表格的方法。ReoGrid控件的說明文檔:https://reogrid.net/document/
//ReoGrid初始化 rightReoGrid.Reset();//隱藏橫向、縱向滾動條 rightReoGrid.SetSettings(unvell.ReoGrid.WorkbookSettings.View_ShowScrolls, false); //隱藏橫向滾動條 //rightReoGrid.SetSettings(unvell.ReoGrid.WorkbookSettings.View_ShowHorScroll, false); //隱藏縱向滾動條 //rightReoGrid.SetSettings(unvell.ReoGrid.WorkbookSettings.View_ShowVerScroll, false); //隱藏行頭(A,B,C...)和列頭(1,2,3...) rightReoGrid.CurrentWorksheet.SetSettings(unvell.ReoGrid.WorksheetSettings.View_ShowHeaders, false);
Reset():Reset control and workbook (remove all worksheets and put one new) 重新設置控件,移除全部的工作頁重新設置一個新的空白頁
效果如下圖:
按照上述代碼中設置,表格變為了下圖:
看起來很low,也沒有標題,接下來進行表格的重繪
首先設置一下當前顯示區域要展示的行和列,行數和列數根據各自的需求以及控件大小定,這里只是Demo示范
//設置控件當前工作頁總的行數 var rightReoGridRowNum = 5; //設置控件工作頁總的列數 var rightReoGridColNum = 3; //獲取控件當前工作頁 var rightWorkSheet = rightReoGrid.CurrentWorksheet; rightWorkSheet.Resize(rightReoGridRowNum, rightReoGridColNum);
Resize(int row, int col):參數中row是要設置的行數,col是要設置的列數
接下來設置列的寬度和行的高度
//設定Name列列寬:50 rightWorkSheet.SetColumnsWidth(0, 1, 50); //設定Address列列寬:30 rightWorkSheet.SetColumnsWidth(1, 2, 30); //設定行高:16 rightWorkSheet.SetRowsHeight(0, rightReoGridRowNum, 16);
這里可以看做將整個表格分為了兩大部分,Name列列寬為50,只有第0列這1列;Address列列寬為30,有第1和第2這2列。
設置所有行的行高為16。
SetColumnsWidth(int col, int count, ushort width):從第col列開始(下標從0開始,下標為col的列),count個列的列寬設置為width
SetRowsHeight(int row, int count, ushort height):從第row行開始(下標從0開始,下標為row的行),count個行的行高設置為height
接下來設置標題
//設置標題行 rightWorkSheet[0, 0] = "Name"; rightWorkSheet[0, 1] = "Address1"; rightWorkSheet[0, 2] = "Address2";
表格中的數據如果有初始化需要展示的,可以進行填充
//填充Name列 for (int i = 1; i < rightReoGridRowNum; i++) { rightWorkSheet[i, 0] = "Hello" + i.ToString(); }
今天先記錄到這里,這些就是ReoGrid控件的簡單重繪,ReoGrid控件將鼠標點擊拖動事件重寫了,也就是不可以使用KeyDown和KeyUp事件來實現單元格的交換位置,目前我是使用了Ctrl+鼠標左鍵的點擊事件來實現,下次進行記錄分享。