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 怎样实现 如图效果 程序动态添加数据呢?

Winfrom窗体应用程序___DataGridView

C#重绘DataGridView行

winfrom_导入Excel文件加载数据到datagridview并将数据保存到数据库

2021-11-22 WinFrom面试题 DataGridView中添加了一个ComboBox列,如何使用?