DataGridView控件
可以自己设计DataGridView的列,dgv常用的属性:
dgvShow1.DataSource = null;
dgvShow1.Rows.Clear();//首先清空行
dgvShow1.Columns.Clear();//清空列
dgvShow1.AutoGenerateColumns = false;//自动列设置为false,还有就是想让其显示时不出现多一行则将自动增加行业设为false
DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn();//创建TextBox列
column1.Name = "VERSION_ID";//设置列名
column1.DataPropertyName = "VERSION_ID";//设置列要映射的表格的列名
column1.Visible = false;//这列是否显示
column1.width来设置宽度
dgvShow1.Columns.Add(column1);//将列加入到dgvShow1的列集合内
dgv常用的事件:cellClick
private void dgvShow1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//MessageBox.Show(e.ColumnIndex.ToString());
//MessageBox.Show(e.RowIndex.ToString());
if (e.RowIndex != -1)//判断是否点击的是标题行
if (e.ColumnIndex == 2)//触发事件的列
{
txtVersion.Text = dgvShow1.Rows[e.RowIndex].Cells["VERSION_NUMBER"].Value.ToString();
txtDescription.Text = dgvShow1.Rows[e.RowIndex].Cells["VERSION_DESCRIPTION"].Value.ToString();
txtRemarks.Text = dgvShow1.Rows[e.RowIndex].Cells["VERSION_DETAIL_REMARKS"].Value.ToString();
txtDetailId.Text = dgvShow1.Rows[e.RowIndex].Cells["DETAIL_ID"].Value.ToString();
txtVersionId.Text = dgvShow1.Rows[e.RowIndex].Cells["VERSION_ID"].Value.ToString();
txtMessage.Text = "true";
}
if (e.ColumnIndex == 3)
{
int versionId;
int detailId;
if (e.RowIndex == (this.dgvShow1.RowCount - 1))
{
return;
}
int versionNumber = Convert.ToInt32(dgvShow1.Rows[e.RowIndex].Cells["VERSION_NUMBER"].Value.ToString());
if (dgvShow1.Rows[e.RowIndex].Cells["DETAIL_ID"].Value.ToString() == String.Empty)
{
versionId = Convert.ToInt32(dgvShow1.Rows[e.RowIndex].Cells["VERSION_ID"].Value.ToString());
detailId = 0;
}
else
{
versionId = Convert.ToInt32(dgvShow1.Rows[e.RowIndex].Cells["VERSION_ID"].Value.ToString());
detailId = Convert.ToInt32(dgvShow1.Rows[e.RowIndex].Cells["DETAIL_ID"].Value.ToString());
}
VersionDataFacade versionDataFacade = new VersionDataFacade();
versionDataFacade.DeleteVersionData(versionId, detailId, versionNumber);
ClearAllTxt();
}
}
}
dgv的cellPainting事件,你在该事件内不加如任何的东西,直接MessageBox.show方法就可以看清这个事件的执行过程,他是遍历每一行的单元格进行输出:
private void dgvShow1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
int rowsCount = dgvShow1.RowCount;//计算当前的行数
if (e.ColumnIndex >= this.dgvShow1.Columns["Edit"].Index && e.RowIndex == (rowsCount - 1))//判断是否到了最后一行的第一个单元格
{
using (
Brush gridBrush = new SolidBrush(this.dgvShow1.GridColor),//创建gridBrush和backColorBrush,边框刷和内容刷子
backColorBrush = new SolidBrush(e.CellStyle.BackColor))
{
using (Pen gridLinePen = new Pen(gridBrush))//创建画笔
{
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);//填充单元格
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,//画框线,e.cellbounds.left是左边线,e.cellbounds.bottom-1下边线,这时
e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,//两条线相交的是单元格的左下点,接着在right-1和bottom-1得到的是单元格的右下点
e.CellBounds.Bottom - 1);
if (e.ColumnIndex == this.dgvShow1.Columns["VERSION_UPDATE"].Index)
{
e.Graphics.DrawString("合计", e.CellStyle.Font,//填写内容
Brushes.Crimson, e.CellBounds.X + 2,
e.CellBounds.Y + 2, StringFormat.GenericDefault);
}
if (e.ColumnIndex == this.dgvShow1.Columns["VERSION_DESCRIPTION"].Index)
{
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left - 1,
e.CellBounds.Bottom - 1, e.CellBounds.Left - 1,
e.CellBounds.Top - 1);
e.Graphics.DrawString((rowsCount - 1).ToString(), e.CellStyle.Font,
Brushes.Crimson, e.CellBounds.X + 2,
e.CellBounds.Y + 2, StringFormat.GenericDefault);
}
e.Handled = true;//如果不是,就当这个单元格已经处理过了,步子啊进行处理
}
}
}
}
分享到:
相关推荐
1. **创建DataGridView**:在你的C#代码中,首先需要实例化一个DataGridView控件,并将其添加到窗体上。你可以通过Visual Studio的设计器或者在代码中动态创建。 2. **添加自定义列**:由于没有内置的DateTime列,...
在C# WinForm开发中,`DataGridView`是一个非常重要的控件,它用于显示表格数据,类似于Excel电子表格。然而,标准的`DataGridView`控件不直接支持多行表头,这意味着默认情况下,表头只能显示一行文字。但在某些...
在C#编程中,`DataGridView`控件是一个非常常用的数据展示工具,特别是在Windows Forms应用程序中。它允许我们以表格形式展示数据,并提供了丰富的交互功能。然而,有时我们需要更灵活的界面设计,比如在某些单元格...
在Windows应用程序开发中,`DataGridView`控件是一个常用的组件,用于显示和编辑表格数据。当用户在`DataGridView`中输入数据并按下回车键时,系统默认行为是切换到下一行,但根据你的标题和描述,你可能希望实现的...
### C# WinForm中的KeyDown, KeyPress和KeyUp事件相关知识点 #### 一、按键的类型与识别 在C# WinForm应用中,处理用户的键盘输入是常见需求之一。Windows窗体通过引发键盘事件来响应用户的键盘操作。这些事件主要...
在.NET Framework的开发环境中,`DataGridView`控件是用于显示数据网格的重要组件,常用于Windows Forms应用程序。在C#编程中,我们有时需要创建复杂的表格布局,这时多层表头的功能就显得尤为必要。本篇将详细介绍...
在.NET框架中,`DataGridView`控件是一种常用的用于显示数据表格的组件,广泛应用于Windows Forms应用程序。本篇文章将深入探讨如何在C#编程环境中,特别是在2010版本下,利用`DataGridView`进行列顺序的调整,以及...
e.Handled = true; } ``` 在这个例子中,我们不仅改变了列头的背景色,还覆盖了默认的绘制行为,以确保新的颜色生效。 在Windows Forms开发中,`DataGridView`的自定义能力非常强大,不仅可以自定义标题文本,还...
e.Handled = true; } } private void dataGridView_MouseClick(object sender, MouseEventArgs e) { if (dataGridView.Columns[0].HeaderCellBounds.Contains(e.Location)) { isAllSelected = !...
### WinForm ListView 控件:禁止拖动列头与锁定列头功能实现 #### 概述 在Windows Forms(WinForms)应用程序开发过程中,`ListView` 控件是非常常见且实用的一个控件,它允许用户以表格的形式展示数据。然而,在...