C#實(shí)現(xiàn)DataGridView控件行列互換的方法
本文實(shí)例講述了C#實(shí)現(xiàn)DataGridView控件行列互換的方法。分享給大家供大家參考。具體如下:
該示例程序是一個(gè)Windows窗體應(yīng)用程序,有左右兩個(gè)DataGridView控件:dgvLeft和dgvRight
dgvRight除時(shí)間外的每一行是dgvLeft的一列
private void Form1_Load(object sender, EventArgs e)
{
//C#中確定控件DataGridView根據(jù)內(nèi)容自動(dòng)調(diào)整列寬長(zhǎng)度的屬性
//是AutoSizeColumnsMode,將它的值設(shè)置為AllCells時(shí)可以達(dá)到該效果。
//調(diào)整行每行頭部的寬度(可以更好地顯示出數(shù)字)
this.dgvLeft.RowHeadersWidth = 50;
this.dgvRight.RowHeadersWidth = 50;
//左側(cè)數(shù)據(jù)表
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;
//右側(cè)數(shù)據(jù)表,是左側(cè)數(shù)據(jù)表的轉(zhuǎn)置
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;
}
每一行的行號(hào)可以通過下面的方法添加
//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();
}
}
運(yùn)行效果如下圖所示:

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
測(cè)試stringbuilder運(yùn)行效率示例
測(cè)試StringBuilder的運(yùn)行效率,大家參考使用吧2013-12-12
Unity shader實(shí)現(xiàn)高斯模糊效果
這篇文章主要為大家詳細(xì)介紹了Unity shader實(shí)現(xiàn)高斯模糊效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
C#多線程學(xué)習(xí)之(六)互斥對(duì)象用法實(shí)例
這篇文章主要介紹了C#多線程學(xué)習(xí)之互斥對(duì)象用法,實(shí)例分析了C#中互斥對(duì)象的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
基于Kubernetes實(shí)現(xiàn)前后端應(yīng)用的金絲雀發(fā)布(兩種方案)
這篇文章主要介紹了基于Kubernetes實(shí)現(xiàn)前后端應(yīng)用的金絲雀發(fā)布,文中給大家提到了兩種常用方案,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Winform讓DataGridView左側(cè)顯示圖片
本文主要介紹在如何讓DataGridView左側(cè)顯示圖片,這里主要講解重寫DataGridView的OnRowPostPaint方法,需要的朋友可以參考下。2016-05-05
C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)txt定位指定行的方法,涉及C#針對(duì)文本文件進(jìn)行光標(biāo)定位的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解
這篇文章主要介紹了C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
C#對(duì)Xamarin框架進(jìn)行數(shù)據(jù)綁定
這篇文章介紹了C#對(duì)Xamarin框架進(jìn)行數(shù)據(jù)綁定,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01

