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

本文实例讲述了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#程序设计有所帮助。

(0)

相关推荐

  • C#实现多选项卡的浏览器控件

    本文详细为大家分享了C#多选项卡的浏览器控件的设计与实现,供大家参考,具体内容如下 1.  为什么我们需要多选项卡的浏览器控件 项目中需要使用WinForm应用程序来包装BS应用程序的浏览器外壳,在.NET的WebBrowser中没有多选项卡浏览的自带配置属性,我们需要实现多选项卡的浏览器控件来实现包装BS应用程序的目的,而不会弹出IE浏览器窗口. 2. 我们需要了解哪些知识点 2.1.     WebBrowser控件 WebBrowser 控件为 WebBrowser ActiveX 控件提

  • C#多线程与跨线程访问界面控件的方法

    本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问WebService是一个可行的方法. 典型的,有下面的启动新线程示例: 复制代码 代码如下: private void LoadRemoteAppVersion()  {      if (FileName.Text.Trim() == "") return;      StatusLabel

  • C#实现读取DataSet数据并显示在ListView控件中的方法

    本文实例讲述了C#实现读取DataSet数据并显示在ListView控件中的方法.分享给大家供大家参考.具体如下: /*lvStudentList为ListView控件名 */ DataSet ds = new DataSet(); ds = student.QueryStudents(); //查询表的信息 int rowCount, columnCount,i,j; rowCount = ds.Tables[0].Rows.Count; columnCount = ds.Tables[0].

  • C#使用Aspose.Cells控件读取Excel

    Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的功能,读取Excel的数据并导入到Dataset或数据库中.读取Excel表格数据的代码如下: 首先要引入命名空间:using Aspose.Cells; 复制代码 代码如下: Workbook workbook = new Workbook(); workbook.Open("C:\\test.x

  • C#日期控件datetimepicker保存空值的三种方法

    方法一(推荐): 设置datetimepicker的属性ShowCheckBox为true 在窗口初始化时候,添加代码this.datetimepicker1.Checked = false; 保存日期值入库的时候,就可以根据if(this.datetimepicker1.Checked ==false),保存空值. 方法二: 在窗口初始化函数中添加: 复制代码 代码如下: this.dateTimePicker1.Format=DateTimePickerFormat.Custom; this

  • C#实现用户自定义控件中嵌入自己的图标

    本文实例讲述了C#实现用户自定义控件中嵌入自己的图标.分享给大家供大家参考,具体如下: 下面给出一下具体的步骤. 1. 新建一个用户控件 2. 向资源文件是添加一张图片,图片格式可以是bm,ico 大小最好是 16 * 16 啦! 3. 选中用户控件图标,单击"右键>属性"把 "生成操作 的属性值改为:嵌入的资源(Action Resource) 4. 第四步: [ToolboxBitmap(typeof(CutPitureNew_WPF), "CutPitu

  • C#后台创建控件并获取值的方法

    本文实例讲述了C#后台创建控件并获取值的方法.分享给大家供大家参考.具体实现方法如下: 前台代码: 复制代码 代码如下: <form id="form1" runat="server">     <div>         <div class="item">             Please input a number:             <asp:TextBox runat="s

  • C#实现简单的loading提示控件实例代码

    自己画一个转圈圈的控件 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows

  • C# Winform 子窗体访问父级窗体的控件和属性

    今天在做一个联系人管理的C#设计时,遇到了这个问题,我需要将父窗体中的textBox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textBox.text;来进行值传递,然而并无卵用,经过多次试验,找到了一个比较简单的解决方法: 一.子窗体调用父窗体的静态变量 父窗体:Logout 子窗体:Affirm 父窗体文本框:tB_Logout_Username public partial class Logout : Form { //定义一个静态变量存放父窗体中的文本框的值 pu

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

    本文实例讲述了C#实现DataGridView控件行列互换的方法.分享给大家供大家参考.具体如下: 该示例程序是一个Windows窗体应用程序,有左右两个DataGridView控件:dgvLeft和dgvRight dgvRight除时间外的每一行是dgvLeft的一列 private void Form1_Load(object sender, EventArgs e) { //C#中确定控件DataGridView根据内容自动调整列宽长度的属性 //是AutoSizeColumnsMode

  • C#中改变DataGridView控件边框颜色的方法

    DataGridView是Visual Studio中一个最重要的数据控件.它可以应用在大多数场合,功能强大,使用灵活.本文要重点介绍一下,如果设置DataGridView的边框颜色. 比尔盖次说"Apple机上没有哪一个软件我是觉得应该是微软首创的",这说明盖次对微软软件功能强大的自信心.而乔布斯而说,微软的软件毫无艺术感可言!这说明什么,说明微软的东西--丑! 乔帮主不愧是乔帮主,真是入木三分,直中要害!是的,默认情况下的DataGridView,真是丑!尤其是那个黑色的边框,不是

  • 实现DataGridView控件中CheckBox列的使用实例

    复制代码 代码如下: /// <summary>        /// 实现DataGridView控件中CheckBox列的使用        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void dgvTradList_Ce

  • DataGridView控件显示行号的正确代码及分析

    前些天在写个小程序,用到DataGridView,想给它动态的显示行号.不是很费劲GOOGLE了一下,这GOOGLE不要紧,发现了不少问题.以下基本上都是GOOGLE搜索出来的网上的一些解决方法,千篇一律都是这样的: 复制代码 代码如下: private void DataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)         { for (int i = 0; i < e.RowCount; i+

  • DataGridView控件详细介绍

    1何为DataGridView 通过DataGridView控件,可以显示和编辑表格式的数据,而这些数据可以取自多种不同类型的数据源. DataGridView控件具有很高的的可配置性和可扩展性,提供了大量的属性.方法和事件,可以用来对该控件的外观和行为进行自定义.当你需要在WinForm应用程序中显示表格式数据时,可以优先考虑DataGridView(相比于DataGrid等其它控件).如果你要在小型网格中显示只读数据,或者允许用户编辑数以百万计的记录,DataGridView将为你提供一个易

  • WinForm DataGridView控件隔行变色的小例子

    复制代码 代码如下: dgv.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.White; 隔行变色 复制代码 代码如下: /// <summary>         /// 隔行变色         /// </summary>         /// <param name="dgv">传入DataGridView控件名称</param>         public

  • C# 解决datagridview控件显示大量数据拖拉卡顿问题

    问题描述: 由于在使用SQL查询大量的数据并一次显示到dataGridView控件,出现拖拉的时候卡顿. 解决方法: 1.首先分页. 2.其次把显示控件设置双buffer. 解决过程如下: 1.设置dataGridView双buffer代码如下,需要引用反射命名空间 Type dgvType = this.dataGridView1.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFla

  • C#数据表格(DataGridView)控件的应用案例

    我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询.修改.删除课程信息的操作. 为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成. 下面分几个步骤完成. 1) 创建课程信息表创建课程信息表的 SQL 语句如下. use test; create table course ( id int primary key identity(1,1), name varchar(20), credit numeric(3,1), remark varchar(50) );

  • 详解DataGridView控件的数据绑定

    目录 一.非绑定模式 二.绑定模式 示例程序: 1.界面设计如下图: 2.代码实现如下: 使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据. 将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可.在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可. 一.非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以

  • DataGridView控件常用属性介绍

    通常会设置的DataGridView的属性如下: AllowUserToAddRows - False 指示是否向用户显示用于添加行的选项,列标题下面的一行空行将消失.一般让其消失. AllowUserToDeleteRows - False 指示是否允许用户从DataGridView删除行.一般不允许. AllowUserToOrderColumns - False 指示是否启用手动列重新放置.一般不允许. AllowUserToResizeColumns - True 指示用户是否可以调整列

随机推荐