C#实现DataGridView控件行列互换的方法

所属分类: 软件编程 / C#教程 阅读数: 62
收藏 0 赞 0 分享

本文实例讲述了C#实现DataGridView控件行列互换的方法。分享给大家供大家参考。具体如下:

该示例程序是一个Windows窗体应用程序,有左右两个DataGridView控件:dgvLeft和dgvRight

dgvRight除时间外的每一行是dgvLeft的一列

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;
}

每一行的行号可以通过下面的方法添加

//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#程序设计有所帮助。

更多精彩内容其他人还在看

C#抽象类与抽象方法详解

这篇文章主要为大家详细介绍了C#抽象类与抽象方法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C#代码实现扑克牌排序的几种方式

今天小编就为大家分享一篇关于C#代码实现扑克牌排序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#泛型概念的简介与泛型的使用

今天小编就为大家分享一篇关于C#泛型概念的简介与泛型的使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C# 7.0 使用下划线忽略使用的变量的原因分析

这篇文章主要介绍了C# 7.0 使用下划线忽略使用的变量的原因浅析,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C# 中使用正则表达式匹配字符的含义

正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

C# Dictionary和SortedDictionary的简介

今天小编就为大家分享一篇关于C# Dictionary和SortedDictionary的简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#中SQL Command的基本用法

今天小编就为大家分享一篇关于C#中SQL Command的基本用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataReader访问数据的优点和实例

今天小编就为大家分享一篇关于C#使用SQL DataReader访问数据的优点和实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL Dataset数据集代码实例

今天小编就为大家分享一篇关于的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

C#使用SQL DataAdapter数据适配代码实例

今天小编就为大家分享一篇关于C#使用SQL DataAdapter数据适配代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多