C# Winfrom 获取DataGridview自动生成序号的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Winfrom 获取DataGridview自动生成序号的值相关的知识,希望对你有一定的参考价值。
private void dgvShuJuFenXi_RowPostPaint_1(object sender, DataGridViewRowPostPaintEventArgs e)
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
dgvShuJuFenXi.RowHeadersWidth - 4,
e.RowBounds.Height);
TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
dgvShuJuFenXi.RowHeadersDefaultCellStyle.Font,
rectangle,
dgvShuJuFenXi.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
这是我写的在DataGrideView里自动生成序列号,现在想获取这个自动生成的序列号,该怎么获取?
我写的有一个可以获取那个自动生成的序列号:
private void dgvGoodsexpend_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
DataGridViewTextBoxColumn dgv_Text = new DataGridViewTextBoxColumn();
for (int i = 0; i < dgvGoodsexpend.Rows.Count; i++)
int j = i + 1;
this.dgvGoodsexpend.Rows[i].HeaderCell.Value = j.ToString();
获取值:(我在一个button事件中)
private void button2_Click(object sender, EventArgs e)
string txt = "";
for (int i = 0; i < dgvGoodsexpend.Rows.Count; i++)
txt += dgvGoodsexpend.Rows[i].HeaderCell.Value.ToString()+" / ";
MessageBox.Show(txt);
参考技术A dataGridView1.SelectedRows[0].Index;追问
我刚试了,报错,索引超出范围, dgvShuJuFenXi.SelectedRows[i].Index;
追答把i换成0
追问不行啊,SelectedRows[0]是获取它一行的?
追答错, 是获取你选中行的。
你想获取所有行的序号吗?
嗯 就是获取所有行的序号,我用的循环,SelectedRows[i],这样也报错,索引超出范围
追答dataGridView1.Rows[i].Index
参考技术B 楼主什么意思啊,不太明白啊追问我想让DataGridview自动生成序列号,现在序列号出来了,可是获取不到他的值,请问该怎么获取啊?
追答怎么还自动生成啊,不明白,求解释?
追问嗯,这个序列号不是从数据库的查不来的,是根据DataGridview里数据的条数自动生成的,上面那个代码是我写的在DataGridview里自动生成的序列号的方法,现在序列号是出来了,但是不知道怎么获取它。
追答我都学一年多了怎么没学这些啊,你是自学吗?
追问不是,大哥,我现在很着急,请问您会吗?
追答真不会啊,那耽误你的时间了啊
追问没有没有,您帮我问问别人吧?谢谢了!
追答嗯,好的没问题,问道了立马告诉你
追问恩恩,谢谢大哥啦!
追答没事,都是朋友吗,有事你说话一句话是事哈哈
C#重绘DataGridView行
1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Linq; 5 using System.Text; 6 using System.Windows.Forms; 7 8 namespace Metrox.WinFrom.DataGridView 9 { 10 /// <summary> 11 /// 派生DataGridView 12 /// </summary> 13 class myDataGridView : DataGridView 14 { 15 public myDataGridView() 16 { 17 18 } 19 20 public myDataGridView(Form _form) 21 { 22 this.Dock = DockStyle.Fill;//占满停靠 23 this.RowHeadersVisible = false;//隐藏行头 24 this.ColumnHeadersVisible = true;//隐藏列头 25 this.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//列样式 26 this.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;//行样式 27 this.AllowUserToAddRows = false;//隐藏添加行 28 this.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//选择模式 29 this.ReadOnly = true;//只读 30 this.MultiSelect = false;//单选 31 //奇数行样式 32 this.AlternatingRowsDefaultCellStyle = new DataGridViewCellStyle 33 { 34 BackColor = Color.Silver, 35 SelectionForeColor = Color.White 36 }; 37 //行重绘事件 38 this.RowPrePaint += new DataGridViewRowPrePaintEventHandler(myDataGridView_RowPrePaint); 39 _form.Controls.Add(this); 40 } 41 /// <summary> 42 /// 重绘DataGridView行 43 /// </summary> 44 /// <param name="sender"></param> 45 /// <param name="e"></param> 46 private void myDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) 47 { 48 //要重绘的部份 49 e.PaintParts &= ~DataGridViewPaintParts.Focus; 50 //选中行时 51 if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected) 52 { 53 //区域 54 Rectangle rowBounds = new Rectangle( 55 this.RowHeadersWidth, e.RowBounds.Top, 56 this.Columns.GetColumnsWidth( 57 DataGridViewElementStates.Visible) - 58 this.HorizontalScrollingOffset + 1, 59 e.RowBounds.Height); 60 //重绘区域 61 using (Brush backbrush = 62 new System.Drawing.Drawing2D.LinearGradientBrush(rowBounds, 63 this.DefaultCellStyle.SelectionBackColor, 64 e.InheritedRowStyle.ForeColor, 65 System.Drawing.Drawing2D.LinearGradientMode.Horizontal)) 66 { 67 e.Graphics.FillRectangle(backbrush, rowBounds); 68 } 69 } 70 } 71 72 } 73 }
以上是关于C# Winfrom 获取DataGridview自动生成序号的值的主要内容,如果未能解决你的问题,请参考以下文章
C# winfrom datagridview 子父窗口传值问题
C# winfrom datagridview 怎样实现 如图效果 程序动态添加数据呢?