下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 C# winform DataGridView 的 18 種常見屬性 文章分類編程 C# winform DataGridView 屬性說明 取得或者修改當前單元格的內容 設定單元格只讀 不顯示最下面的新行 判斷新增行 行的用戶刪除操作的自定義 行、列的隱藏和刪除 禁止列或者行的Resize 列寬和行崗以及列頭的高度和行頭的寬度的自動調整 凍結列或行 列順序的調整 行頭列頭的單元格 剪切板的操作 單元格的ToolTip的設置 右鍵菜單(ContextMenuStrip)的設置 單元
2、格的邊框、網格線樣式的設定 單元格衣示值的設定 用戶輸入時,單元格輸入值的設定 設定新加行的默認值 DataGridView取得或者修改當前單元格的內容: 當前單元格指的是DataGridView焦點所在的單元格,它可以通過DataGridView對象的CurrentCell屬性取得。如果當前 單元格不存在的時候,返回Nothing(C#是null) /取得當前單元格內容 Console.WriteLine(DataGridView1.CurrentCell.Value); /取得當前單元格的列Index Console.WriteLine(DataGridViewl.CurrentCell.
3、Columnlndex); /取得當前單元格的行Index Console.WriteLine(DataGridView1.CurrentCell.Rowindex); 另外,使用DataGridView.CurrentCellAddress屬性(而不是虎接訪問單元格來確定單元格所在的 行:DataGridView.CurrentCellAddress.Y 列:DataGridView.CurrentCellAddress.X this.dataGridViewl .RowCount 1) row = 0: this.dataGridViewl .CurrentCell = this.data
4、GridViewl 0. row; /向上遍歷 private void butt on 5_Click(object sen der, Eve ntArgs e) int row = this.dataGridViewl .CurrentRow.lndex -1; if (row 0) row = this.dataGridViewl .RowCount 1; this.dataGridViewl .CurrentCell = this.dataGridViewl 0. row; * 注恿:this.dataGridView 的索引器的參數是:columnindex, rowindex 或是
5、 columnName, rowindex 這與習慣不同。 DataGridView設定單元格只i賣: (5-7 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 1) 使用Readonly屬性 如果希望,DataGridView內所有單元格都不可編輯,那么只要: /設置DataGridView!為只讀 DataGridViewl.Readonly = true;此時,用戶的新增行操作和刪除行操作也被屏蔽了。 如果希望,DataGridView內某個單元格不可編輯,那么只要: /設置DataGridViewl的第2列整列單元格為只
6、讀 DataGridViewl.Columns1.Read Only = true; /設置DataGridView 1的第3行整行單元格為只讀 DataGridViewl .Rows2.Read Only = true; 設置DataGridView 1的0, 0單元格為只讀 DataGridViewl 0, 0.Readonly = true; 2) 使用EditMode屬性 DataGridView.EditMode屬性被設置為DataGridViewEditMode.EditProgrammatically時, 用戶就不能手動編輯單元格的內 容了。但是可以通過程序,調用DataGrid
7、View.BeginEdit方法,使單元格進入編輯模式進行編輯。 DataGridViewl .EditMode = DataGridViewEditMode.EditProgrammatically; 3) 根據條件設定單元格的不可編輯狀態(tài) 當個個的通過單元格坐標設定單元格Readonly屬性的方法太麻煩的時候,你可以通過CellBeginEdit事件來取消單元 格的編輯。 /CellBeginEdit事件處理方法 private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e
8、) DataGridView dgv = (DataGridView)sender; 是否可以進行編輯的條件檢査 if (dgv.Columnse.Columnlndex.Name = MColumnV & !(bool)dgv,Column2, e.Rowindex.Value) 取消編輯 e.Cancel = true; DataGridView不顯示最下面的新行: 通常DataGridView的最下面行是用戶新追加的行(行頭顯示 T。如果不想讓用戶新追加行即不想顯示該新行,可以 將 DataGridView 對象的 AllowUserToAddRows 屬性設置為 False /設置用戶
9、不能手動給DataGridViewl添加新行 DataGridViewl.AllowUserToAddRows = false; 但是,可以通過程序:DataGridViewRowCollection.Add 為 DataGridView 追加新行。 補足:如果 DataGridView 的 DataSource 綁定的是 DataView,還可以通過設置 DataView.AllowAdd 屬性為False來達到同樣的效果。 DataGridView判斷新增行: DataGridView的AllowUserToAddRows屬性為True時也就是允許用戶追加新行的場合下,DataGridVi
10、ew的最后行就 是新追加的行(行)。 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 使用DataGridViewRow.lsNewRow屬性可以判斷哪行是新追加的行。另外,通過DataGridView.NewRowIndex可以獲 取新行的行序列號. 在沒有新行的時候,NewRowIndex =。 DataGridView行的用戶刪除操作的自定義: 1) 無條件的限制行刪除操作。 默認時,DataGridView是允許用戶進行行的刪除操作的。如果設置DataGridView對象的AllowllserToDeleteRows屬性
11、 為False時,用戶的行刪除操作就被禁止了。 禁止DataGridViewl的行刪除操作。 DataGridViewl.AllowllserToDeleteRows = false; 但是,通過DataGridViewRowCollection.Remove還是可以進行行的刪除。 補足:如果DataGridView綁定的是DataView的話,通過DataView.AllowDelete也可以控制行的刪除。 2) 行刪除時的條件判斷處理。 用戶在刪除行的時候,將會引發(fā)DataGridView.UserDeletingRow事件。在這個事件里,可以判斷條件并取消刪除操作。 / DataGrid
12、Viewl 的 UserDeletingRow 事件 private void DataGridViewl_UserDelet泊gRow( object sender, DataGridViewRowCancelEventArgs e) 刪除前的用戶確認。 if (MessageBox.ShowC1認要刪除該行數據嗎? ”, ”刪除確認”, MessageBoxButtons.OKCancel. MessageBoxIcon.Question) != DialogResult.OK) 如果不是OK,則取消。 e.Ca ncel = true; DataGridView行、列的隱藏和刪除: 1)
13、行、列的隱藏 / DataGridViewl 的第列隱藏 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 DataGridView1.Columns0.Visible = false; / DataGridViewl 的第-行隱藏 DataGridViewl .Rows0.Visible = false; 2) 行頭、列頭的隱藏 /列頭隱藏 DataGridViewl .Colum nHeadersVisible = false; /行頭隱藏 DataGridViewl .RowHeadersVisible = false; 3
14、) 行和列的刪除 刪除名為-Column!0的列 DataGridViewl .Columns. Remove(” Column*! ”); 刪除第 i 列 DataGridViewl.Columns.RemoveAt(O); 刪除第一行 DataGridViewl .Rows.RemoveAt(O); 4) 刪除選中行 foreach (DataGridViewRow r in DataGridViewl .SelectedRows) if (Ir.lsNewRow) DataGridViewl .Rows.Remove(r); DataGridView禁止列或者行的Resize: 1) 禁
15、止所有的列或者行的Resize /禁止用戶改變DataGridViewl的所有列的列寬 DataGridViewl.AllowUserToResizeColumns = false; /禁上用戶改變DataGridViewl 0所有行的行高 DataGridViewl.AllowllserToResizeRows = false; 但是可以通過DataGridViewColumn.Width或者DataGridViewRow.Height屬性設定列寬和行高。 2) 禁止指定行或者列的Resize /禁止用戶改變DataGridView 1的第-列的列寬 DataGridViewl .Colum
16、ns0.Resizable = DataGridViewT riState.False; /禁止用戶改變DataGridViewl的第列的行寬 DataGridViewl .Rows0.Resizable = DataGridViewT riState. False: 關于NoSet: 當 Resizable 屬性設為 DataGridViewTriState.NotSet 時,實際上會默認以 DataGridView 的 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 AllowUserToResizeColumns 和All
17、owllserToResizeRows的屬性值進行設定。 比如:DataGridView.AllowUserToResizeColumns = False 且 Resizable 是 NoSet 設定時,Resizable = False 判斷 Resizable 是否是繼承設定 了 DataGridView 的 AllowUserToResizeColumns 和 AllowUserToResizeRows 的屈性 值, 可以根據State屬性判斷。如果State屬性含有ResizableSet,那么說明沒有繼承設定。 3) 列寬和行高的最小值的設定 第-列的最小列寬設定為100 DataG
18、ridView1.Columns0.MinimumWidth = 100; 第一行的最小行高設定為50 DataGridViewl .Rows0.MinimumHeight = 50; 4) 禁止用戶改變行頭的寬度以及列頭的高度 禁止用戶改變列頭的高度 DataGridViewl .Colum nHeadersHeightSizeMode = DataGridViewColum nH eadersHeightSizeMode.DisableResizing; 設置用戶改變行頭的寬度 DataGridViewl. RowHeadersWidthSizeMode = DataGridViewRow
19、HeadersWidthSizeMode.EnableResizing; DataGridView列寬和行高自動調整的設定: 1) 設定行高和列寬自動調整 /設定包括Header和所有單元格的列寬自動調整 DataGridViewl .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AIICells; /設定包括Header和所有單元格的行高自動調整 DataGridViewl .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AIICells; AutoSizeColumnsMode
20、屬性的設定值枚舉請參照 msdn 的 DataGridViewAutoSizeRowsMode 說明。 2) 指定列或行自動調整 第一列自動調整 DataGridViewl .Columns0.AutoSizeMode = DataGridViewAutoSizeColu mnM ode.DisplayedCells; AutoSizeMode 設定為 NotSet 時,默認繼余胸是 DataGridView.AutoSizeColumnsMode 屬性。 3) 設定列頭的高度和行頭的寬度自動調整 /設定列頭的寬度可以自由調整 DataGridViewl .Colum nHeadersHeig
21、htSizeMode = DataGridViewColum nH eadersHeightSizeMode. AutoSize; 設定行頭的寬度可以自由調整 DataGridViewl. RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAIIHeaders; 4) 隨時自動調整 a, 臨時的,讓列寬自動調整,這和指定AutoSizeColumnsMode 性樣。 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 讓DataGridVi
22、ewl的所有列寬自動調整下。 DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 讓DataGridView 1的第列的列寬自動調整一下。 DataGridViewl.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.AIICells);上而調用的 AutoResizeColumns 和 AutoResizeColumn 當指定的是DataGridViewAutoSizeColumnMode.AIICells的時候,參數可以省略=即: DataG
23、ridViewl.AutoResizeColumn(O)和 DataGridViewl.AutoResizeColumns() b, 臨時的,讓行高自動調整 讓DataGridViewl的所有行高自動調整一下。 DataGridViewl.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells); 讓DataGridView 1的第-行的行高自動調整一下。 DataGridViewl .AutoResizeRow(Ot DataGridViewAutoSizeRowMode.AllCells);上而調用的 AutoResizeRows 和 Au
24、toResizeRow 當指定的是 DataGridViewAutoSizeRowMode.AIICells 的時候,參數可以省略。即:DataGridViewl.AutoResizeRow (0) 和 DataGridViewl .AutoResizeRows() C,臨時的,讓行頭和列頭自動調整 列頭高度自動調整 DataGridViewl.AutoResizeColumnHeadersHeight(); 行頭寬度自動調整 DataGridViewl.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSiz
25、eToAIIHeaders); 關于性能: 通過AutoSizeColumnsMode或者AutoSizeRowsMode屬性所指定的單元格進行自動調整時,如果調整次數過于多那么將 可能導致性能下降, 尤其是在行和列數比較多的情況下。在這時用DisplayedCells代替AllCells能減少非所見的單元格的調整,從而捉高性 DataGridView凍結列或行 1) 列凍結 DataGridViewColumn.Frozen屬性為True時,該列左側的所有列彼固定,橫向滾動時固定列不隨滾動條滾動而左右移 動。這對于重要列固定顯示很有用。 / DataGridView 1的左側2列固定 Dat
26、aGridViewl.Columns1.Froze n = true; 但是,DataGridView.AllowllserToOrderColumns = True時,固定列不能移動到非固定列,反之亦然。 2) 行凍結 DataGridViewRow.Frozen屬性為True時,該行上而的所有行被固定,縱向滾動時固定行不隨滾動條滾動而上下移動。 / DataGridView 1 的上 3 行固定 DataGridViewl .Rows2. Froze n = true; DataGridView列順序的調整 設定DataGridView的AllowUserToOrderColumns為Tr
27、ue的時候.用戶可以自由調整列的順序。 當用戶改變列的順序的時候,其本身的Index不會改變.但是Displayindex改變八你也可以通過程序改變Displayindex 來改變列的最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 順序。列順序發(fā)生改變時會引發(fā)ColumnDisplaylndexChanged事件: / DataGridView!的 ColumnDisplaylndexChanged 事件處理方法 private void DataGridView1_ColumnDisplaylndexChanged(objec
28、t sender, DataGridViewColumnEventArgs e) Console.WriteLine(M0的位置改變到1: e.Column.Name, e.Column.Displaylndex); 行頭列頭的單元格 C# 改變DataGridViewl的第列列頭內容 DataGridViewl .Columns0.HeaderCell.Value =第咧”; 改變DataGridView 1的第行行頭內容 DataGridViewl .Rows0.HeaderCell.Value = ”第行: /改變DataGridViewl的左上頭部單元內容 DataGridViewl.
29、TopLeftHeaderCell. Value = ”左上豎 另外你也可以通過HeadefText來改變他們的內容。 C# 改變DataGridViewl的第列列頭內容 DataGridViewl .Columns0.HeaderText =第列二 DataGridView剪切板的操作 TOP DataGridView.ClipboardCopyMode 屬性被設定為 DataGridViewClipboardCopyMode.Disable 以外的情況時,Ctrl + C按下的時候,被選擇的單元格的內容會拷貝到系統(tǒng)剪切板內。格式有:Text, UnicodeText, Htmb Comma
30、SeparatedValueo 可以總接粘貼到 Excel 內 ClipboardCopyMode 還可以設定 Header 部分是否拷貝:EnableAlwaysIncludeHeaderText 拷貝 Header 部分. EnableWithoutHeaderText 則不拷貝。默認是 EnableWithAutoHeaderText , Header 如果選擇了的話,就拷貝。 1) 編程方式實現剪切板的拷貝 Clipboard.SetDataObject(DataGridView1.GetClipboardContent() 2) DataGridView的數據粘貼 實現剪切板的拷貝比
31、較容易,但是實現DataGridView的直接粘貼就比較難 C Ctrl + V按下進行粘貼時, DataGridView沒有提供方法,只能自己實現。 以下,是粘貼時簡單的事例代碼,將拷貝數據粘貼到以選擇單元格開始的區(qū)域內。 C# /當前單元格是否選擇的判斷 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 if (DataGridViewl .CurrentCell = null) return; int insertRowIndex = DataGridViewl .CurrentCell.Rowindex; 獲取剪切板的內容
32、,并按行分割 string pasteText = Clipboard.GetText(); if (string.IsNullOrEmpty(pasteText) return; pasteText = pasteText. Replace(w ”,H ”); pasteText = pasteText.Replacef * *); pasteText.TrimEnd(new char 1 * ); stringQ lines = pasteText.Splitf *); bool isHeader = true; foreach (string line in lines) 是否是列頭 i
33、f (isHeader) isHeader = false; con tinue; /按Tab分割數據 stringQ vals = line.Split(* *); 判斷列數是否統(tǒng)一 if (vals.Length 1 != DataGridViewl .ColumnCount) throw new ApplicationException(M粘貼的列數不左確=”); DataGridViewRow row = DataGridViewl.RowsinsertRowlndex; 行頭設定 row.HeaderCell.Value = vals0; 單元格內容設定 for (int i = 0
34、; i Row Column DataGridView = CellContextMenuStripNeeded RowContextMenuStripNeeded 事件 利用CellContextMenuStripNeeded事件可以設定單元格的右鍵菜單,尤其但需要右鍵菜單根據單元格值的變化而變化 的時候。比起使用循環(huán)遍歷,使用該事件來設定右鍵菜單的效率更趾 但是,在DataGridView使用了 DataSource綁定而 且是VirtualMode的時候,該事件將不被引發(fā)。 C# / CellContextMenuStripNeeded 事件處理力法 private void DataG
35、ridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e) DataGridView dgv = (DataGridView)sender; if (e.Rowindex 0) / 列頭的 ContextMenuStrip 設定 e.ContextMenuStrip = this.ContextMenuStripl; else if (e.Columnindex 0) / 行頭的 ContextMenuStrip 設定 e.ContextMenuStr
36、ip = this.ContextMenuStrip2; else if (dgve.ColumnIndex, e.Rowindex.Value is int) /如果單元格值是整數時 最新資料推薦 最新精品資料整理推薦.更新于二O二 O 年十二月十八日2020年12月18日星期五19:36:31 e.ContextMenuStrip = this.ContextMenuStrip3; 同樣,可以通過RowContextMenuStripNeeded事件來設定行的右鍵菜單。 C# / RowContextMenuStripNeeded 事件處理方法 private void DataGridV
37、iew1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e) DataGridView dgv = (DataGridView)sender; / 當Columnr*列是 Bool 型且為 True 時、設定其的 ContextMenuStrip object boolVal = dgvMColumnV e.Rowindex.Value; Console.WriteLine(boolVal); if (boolVal is bool & (bool)boolVal)
38、 e.ContextMenuStrip = this.ContextMenuStripl; CellContextMenuStripNeeded 事件處理方法的參數中.e.Columnlndex=-1 J *示行頭、e.Rowlndex=1_| 農示列 頭。RowContextMenuStripNeeded 則不存在e.Rowlndex=1的情況。 DataGridView的單元格的邊框、網格線樣式的設定 1) DataGridView的邊框線樣式的設定 DataGridView的邊框線的樣式是通過DataGridView.BorderStyle屬性來設定的。BorderStyle屬性設定值是
39、個 Borderstyle 枚舉:FixedSingle (單線,默認)、Fixed3D、None。 2) 單元格的邊框線樣式的設定 竜元格的邊框線的樣式是通過DataGridView.CellBorderStyle屬性來設定的。CellBorderStyle屬性設定值是 DataGridViewCellBorderStyle 枚舉。(詳細參見 MSDN) 另外,通過 DataGridView.ColumnHeadersBorderStyle 和 RowHeadersBorderStyle 屬性可以修改 DataGridView 的頭部 的單元格邊框線樣式。屬性設定值是DataGridView
40、HeaderBorderStyle枚舉。(詳細參見MSDN) 3) 單元格的邊框顏色的設定 單元格的邊框線的顏色可以通過DataGridView.GridColor B性來設定的。默認是ControlDarkDark o但是只有在 CellBorderStyle彼設定為Single、SingleHorizontaL SingleVertical的條件下才能改變其邊框線的顏色。同樣, ColumnHeadersBorderStyle 以及 RowHeadersBorderStyle 只有在彼設定為 Single 時,才能改變顏色。 4) 單元格的上下左右的邊框線式樣的單獨設定 CellBorderStyle只能設定單元格全部邊框線的式樣。要單獨改變單元格某邊邊框式樣的話,需要用到 DataGridV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年互聯(lián)網金融服務質押反擔保合同3篇
- 2024中小學學生安全保險及意外傷害處理合同3篇
- 2024年度貸款抵押房屋買賣合同糾紛處理指南3篇
- 2024年度留學咨詢中介買賣合同3篇
- 2024年度高科技專利權交叉許可使用合同范本正規(guī)范本3篇
- 2024年度消防設備質量檢測與保證服務協(xié)議3篇
- 2024年度家具招投標買賣合同標準范本3篇
- 新疆師范大學《數據庫原理課程設計》2023-2024學年第一學期期末試卷
- 乳房整形病因介紹
- 小學教育跨國并購失敗案例分析
- 煤炭物流園區(qū)總體規(guī)劃(2016-2030)參考范本
- 一級部門職責及組織架構-總裁辦教學
- 精品新技術、新產品、新工藝、新材料的應用
- 豎井涌水量方程判定方法
- T∕ACSC 01-2022 輔助生殖醫(yī)學中心建設標準(高清最新版)
- 6.2Kendall 相關性檢驗
- 國家開放大學《理工英語1》邊學邊練參考答案
- 國家開放大學電大??啤豆芾頃嫛菲谀┰囶}及答案
- 內蒙古師范大學論文封面
- (整理)《運籌學》期末考試試題與參考答案
- (完整版)《金匱要略》方劑總匯(完整版)
評論
0/150
提交評論