本文实例讲述了C#实现DataGridView控件行列互换的方法。分享给大家供大家参考。具体如下:
该示例程序是一个Windows窗体应用程序,有左右两个DataGridView控件:dgvLeft和dgvRight
dgvRight除时间外的每一行是dgvLeft的一列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
private void Form1_Load( object sender, EventArgs e) { //C#中确定控件DataGridView根据内容自动调整列宽长度的属性 //是AutoSizeColumnsMode,将它的值设置为AllCells时可以达到该效果。 //调整行每行头部的宽度(可以更好地显示出数字) this .dgvLeft.RowHeadersWidth = 50; this .dgvRight.RowHeadersWidth = 50; //左侧数据表 DataTable dtLeft = new DataTable(); dtLeft.Columns.Add( "C1" ); dtLeft.Columns.Add( "C2" ); dtLeft.Columns.Add( "C3" ); dtLeft.Columns.Add( "TIME" ); dtLeft.Rows.Add( "1-1" , "1-2" , "1-3" , DateTime.Now.ToShortTimeString()); dtLeft.Rows.Add( "2-1" , "2-2" , "2-3" , DateTime.Now.ToShortTimeString()); dtLeft.Rows.Add( "3-1" , "3-2" , "3-3" , DateTime.Now.ToShortTimeString()); dtLeft.Rows.Add( "4-1" , "4-2" , "4-3" , DateTime.Now.ToShortTimeString()); dtLeft.Rows.Add( "5-1" , "5-2" , "5-3" , DateTime.Now.ToShortTimeString()); dtLeft.Rows.Add( "6-1" , "6-2" , "6-3" , DateTime.Now.ToShortTimeString()); dgvLeft.DataSource = dtLeft; //右侧数据表,是左侧数据表的转置 DataTable dtRight = new DataTable(); for ( int i = 0; i < dtLeft.Rows.Count; i++) { dtRight.Columns.Add( "C" + i); } dtRight.Columns.Add( "TIME" ); for ( int i = 0; i < dtLeft.Columns.Count - 1; i++) { object [] obj = new object [dtLeft.Rows.Count + 1]; for ( int j = 0; j < dtLeft.Rows.Count; j++) { obj[j] = dtLeft.Rows[j][i]; } obj[obj.Length - 1] = DateTime.Now.ToShortTimeString(); dtRight.Rows.Add(obj); } dgvRight.DataSource = dtRight; } |
每一行的行号可以通过下面的方法添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//DataGridView 控件 dgvLeft 的 RowsAdded 事件 private void dgvLeft_RowsAdded( object sender, DataGridViewRowsAddedEventArgs e) { for ( int i = 0; i < dgvLeft.Rows.Count; i++) { this .dgvLeft.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; this .dgvLeft.Rows[i].HeaderCell.Value = i.ToString(); } } //DataGridView 控件 dgvLeft 的 RowsRemoved 事件 private void dgvLeft_RowsRemoved( object sender, DataGridViewRowsRemovedEventArgs e) { for ( int i = 0; i < dgvLeft.Rows.Count; i++) { this .dgvLeft.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; this .dgvLeft.Rows[i].HeaderCell.Value = i.ToString(); } } //DataGridView 控件 dgvRight 的 RowsAdded 事件 private void dgvRight_RowsAdded( object sender, DataGridViewRowsAddedEventArgs e) { for ( int i = 0; i < dgvRight.Rows.Count; i++) { this .dgvRight.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; this .dgvRight.Rows[i].HeaderCell.Value = i.ToString(); } } //DataGridView 控件 dgvRight 的 RowsRemoved 事件 private void dgvRight_RowsRemoved( object sender, DataGridViewRowsRemovedEventArgs e) { for ( int i = 0; i < dgvRight.Rows.Count; i++) { this .dgvRight.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; this .dgvRight.Rows[i].HeaderCell.Value = i.ToString(); } } |
运行效果如下图所示:
希望本文所述对大家的C#程序设计有所帮助。