`
Mr_Chunlei
  • 浏览: 28093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C#WinForm程序的DataGridView控件,e.Handled = true

 
阅读更多

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;//如果不是,就当这个单元格已经处理过了,步子啊进行处理
}
}
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics