Winform datagridview相关操作
生活随笔
收集整理的這篇文章主要介紹了
Winform datagridview相关操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
datagridview顯示行號的2種方法:
方法一: 網上最常見的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中繪制行號: privatevoiddataGridView1_RowPostPaint(objectsender, DataGridViewRowPostPaintEventArgs e){try{e.Graphics.DrawString((e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, new SolidBrush(Color.CadetBlue), e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5);}catch(Exception ex){MessageBox.Show("添加行號時發(fā)生錯誤,錯誤信息:"+ex.Message, "操作失敗");}} 但是這種方法在大數(shù)據(jù)量的時候性能比較差,每次滾動數(shù)據(jù)都會觸發(fā)RowPostPaint事件。 方法二: 我的做法是給每行的HeaderCell賦值。 在網上發(fā)現(xiàn)有人提到這種做法,但是因為最后的顯示問題而選擇了上面的方法。具體問題就是,在行號超過2位,如100、1000,在選中該行時,DataGridView的行指示符?會把行號往右擠,導致現(xiàn)實不全,100的時候顯示?10。 其實還是RowsHeaderWidth的大小有問題,將該列的寬度放大,行號顯示的也沒問題! 不知道他們有沒有試過,上面繪制行號的方法在大行號的情況下顯示也會有問題。 既然知道問題所在就要找到相應的解決方法。 具體做法是將DataGridView的RowsHeaderWidthSizeMode屬性設置為AutoSizeToAllHeaders或者AutoSizeToDisplayedHeaders,這樣自動設置寬度就不會出現(xiàn)行指示符擠壓行號的情況了。 對于每次DataGridView的行變化,我們都去更新行號,用RowsAdded和RowsRemoved事件。 代碼如下: RowsAdded & RowsRemoved privatevoidDataGridView1_RowsAdded(objectsender, DataGridViewRowsAddedEventArgs e) { for(inti =0; i <e.RowCount; i++) { this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight; this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Value =(e.RowIndex +i +1).ToString(); } for(inti =e.RowIndex +e.RowCount; i <this.DataGridView1.Rows.Count; i++) { this.DataGridView1.Rows[i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight; this.DataGridView1.Rows[i].HeaderCell.Value =(i +1).ToString(); } }privatevoidDataGridView1_RowsRemoved(objectsender, DataGridViewRowsRemovedEventArgs e) { for(inti =0; i <e.RowCount; i++) { this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight; this.DataGridView1.Rows[e.RowIndex +i].HeaderCell.Value =(e.RowIndex +i +1).ToString(); } for(inti =e.RowIndex +e.RowCount; i <this.DataGridView1.Rows.Count; i++) { this.DataGridView1.Rows[i].HeaderCell.Style.Alignment =DataGridViewContentAlignment.MiddleRight; this.DataGridView1.Rows[i].HeaderCell.Value =(i +1).ToString(); } }datagridview 指定列,進行綁定,不綁定的列不顯示:
1:Winform項目 中:private void Form_Load(object sender, EventArgs e){//禁止自動生成列this.datagridview1.AutoGenerateColumns = false;} 2:Web項目中: 設置datagridview 的AutoGenerateColumns 屬性為False?
C#dataGridView顯示menuStrip
拖一個ContextMenuStrip,設置dataGridView的ContextMenuStrip屬性綁定快捷菜單即可。設置DataGridView只能選中一行:
this.dataGridView.MultiSelect = false;
?
轉載于:https://www.cnblogs.com/iack/p/3559726.html
總結
以上是生活随笔為你收集整理的Winform datagridview相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JPA+QueryDSL
- 下一篇: 四叶草引导程序 CloverBootlo