C# WinForm dataGridView 技巧小结

1.不显示第一个空白列
RowHeaderVisible属性设置为false

2.点击cell选取整行
SelectinModel 属性FullRowSelect
RowSelectinModel属性设置
或用CellClick事件也可以         //整行选取
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//e.RowIndex > -1否则点击header也是叫一列
if (dataGridView1.Rows.Count > 0 && e.RowIndex > -1)
{
//MessageBox.Show(e.RowIndex.ToString());
dataGridView1.Rows[e.RowIndex].Selected = true;
}
}
3.添加按钮图片按钮列事件
按钮上要显示文字要设置Text属性。默认是没有值的。但还没搞清楚,为什么 DataPropertyName绑定字段,不显示。所以想获得如ID这些识别记录的值只有放到其他列了。
//按钮事件
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1)
{
MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
}
}
4.添加外部按钮取得选取列
private void button1_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
MessageBox.Show(dataGridView1.SelectedRows[0].Cells[1].Value.ToString());
}
}
5.其他设置的。
是否允许多行选取:MultiSelect 。
不自动绑定数据表里的字段。
让 最后一列宽度延伸满适应上级的宽度:设置改列AutoSizeModel为Fill

6
//dataGridView 删除某一列的操作
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == -1)
{
return;
}
string action = dataGridView1.Columns[e.ColumnIndex].Name;//操作类型
if (action == "DelOrder")
{
if (MessageBox.Show("确定删除吗?", "提示", MessageBoxButtons.OKCancel,MessageBoxIcon.Warning) == DialogResult.OK)
{                 
string ID = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
SellBiClass.DelRules(ID);

}
}
NewLoad();
}

void NewLoad()
{           
dataGridView1.DataSource = SellBiClass.GetRules();
}
7 //dataGridView 格式化每一列
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 7) //哪一列
{
if (e.Value.ToString()=="1")
{
e.Value = "特定比例";              
}
else
{
e.Value = "默认比例";
e.CellStyle.ForeColor = Color.Red;
}
}

}
8  获得dataGridView 某一条记录的主键id  this.dataGridView1[第几列, this.dataGridView1.CurrentCell.RowIndex].Value.ToString()
9 不显示出dataGridView1的最后一行空白 dataGridView1.AllowUserToAddRows = false; 设置上这条语句即可黑色头发

10 contextMenuStrip 属性:当用记右击该控件时显示的快捷方式.

11 导出excel  private void pictureBox4_Click(object sender, EventArgs e)
{
#region 导出
if (dataGridView1.Rows.Count > 0)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.DefaultExt = "xls";
saveFileDialog.Filter = "EXCEL文件(*.XLS)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.FileName = "客户信息";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出到EXCEL";
saveFileDialog.ShowDialog();
if (saveFileDialog.FileName == "")
return;
Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str = "";
try
{
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridView1.Columns[i].HeaderText;
}
sw.WriteLine(str);
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridView1.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
#endregion
}

12.计算总记录数 (dataGridView1.Rows.Count>0) dataGridView1.Rows.Count>-1包括标题列

13使用button控件进行修改dataGridView 中的某一行数据或删除某一行记录
private void pictureBox2_Click(object sender, EventArgs e)
{
#region 赋值
if (dataGridView1.Rows.Count > 0)
{
EmpInfo empInfo = new EmpInfo();
int index = dataGridView1.CurrentRow.Index;

//记录复制到文本框
empInfo.EmpId = dataGridView1.Rows[index].Cells[0].Value.ToString();
empInfo.EmpName = dataGridView1.Rows[index].Cells[1].Value.ToString();
empInfo.EmpSex = dataGridView1.Rows[index].Cells[2].Value.ToString();
empInfo.EmpPhone = dataGridView1.Rows[index].Cells[3].Value.ToString();
empInfo.EmpDate = Convert.ToDateTime(dataGridView1.Rows[index].Cells[4].Value);
empInfo.EmpPhone = dataGridView1.Rows[index].Cells[5].Value.ToString();
empInfo.EmpEdu = dataGridView1.Rows[index].Cells[6].Value.ToString();
empInfo.EmpMarriage = dataGridView1.Rows[index].Cells[7].Value.ToString();
empInfo.EmpBirth = Convert.ToDateTime(dataGridView1.Rows[index].Cells[8].Value.ToString());
empInfo.EmpCard = dataGridView1.Rows[index].Cells[9].Value.ToString();
empInfo.EmpAddress = dataGridView1.Rows[index].Cells[10].Value.ToString();
empInfo.EmpRemark = dataGridView1.Rows[index].Cells[11].Value.ToString();
EmpNews empNews = new EmpNews(empInfo);
empNews.ShowDialog();
dataGridView1.DataSource = HXX.SeleEmp();
}
#endregion
}

private void pictureBox3_Click(object sender, EventArgs e)
{
#region 删除
if (dataGridView1.Rows.Count > 0)
{
int index = dataGridView1.CurrentRow.Index;
string EmpId = dataGridView1.Rows[index].Cells[0].Value.ToString();
if (MessageBox.Show("删除后将不能恢复!", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
HXX.deleEmp(EmpId);
dataGridView1.DataSource = HXX.SeleEmp();
}
}
#endregion
}

引用自:http://limingloved.blog.163.com/blog/static/132297658201022454929764/

转载于:https://www.cnblogs.com/baishiying/archive/2012/08/17/2644233.html

C# WinForm dataGridView 技巧小结相关推荐

  1. php反序列化java_PHP反序列化漏洞简介及相关技巧小结

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 要学习PHP反序列漏洞,先了解下PHP序列化和反序列化是什么东西. php程序为了保存和转储对象,提供了序列化的方法,php序列化是为了在程序运 ...

  2. 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案

    上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...

  3. Winform Datagridview 单元格html格式化支持富文本

    Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...

  4. C# winform DataGridView 常见属性

    C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...

  5. WinForm DataGridView 绑定泛型List(ListT)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  6. mybatis plus按时间段查询_你应该知道的这些Mybatis-Plus使用技巧(小结)

    最近在用 Mybatis-Plus,嗯,真香!!!今天就来说说 Mybatis-Plus 的那些使用技巧 1.条件查询(QueryWrapper) 如果说,我们需要查询的 SQL 语句如下: SELE ...

  7. php反序列化漏洞实验,PHP反序列化漏洞简介及相关技巧小结

    原标题:PHP反序列化漏洞简介及相关技巧小结 *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 要学习PHP反序列漏洞,先了解下PHP序列化和反序列化是什么东西. php程序为了保存和转储对象, ...

  8. 科研神器Latex:algorithm2e算法常用技巧小结

    科研神器Latex:algorithm2e常用技巧小结 一个简单的模板 宏包参数的使用 基本语法 修改Algorithm为中文 修改Input.Output为中文 自定义算法编号 添加算法目录 整体效 ...

  9. github搜索技巧小结

    关于搜索 对自己而言,这是篇迟来的重要的笔记,github是宝库,搜索方法不当可能与珍贵的代码擦肩而过,于是将常用搜索方法分类总结以备不时之需: 个人常用搜索方法总的来说分为作者和内容两种,按照自己的 ...

最新文章

  1. 20145222黄亚奇《Java程序设计》第8周学习总结
  2. VTK:可视化之QuadraticSurface
  3. 拼装sql_SQL优化最干货总结(2020最新版)
  4. Android Studio快捷键(MAC版)
  5. netflix_Netflix的计算因果推论
  6. LeetCode 1466. 重新规划路线(DFS/BFS)
  7. 01-Angularjs开发环境搭建
  8. 【博客项目】—密码加密( 六)
  9. matlab在循环中保存jpg格式_Matlab如何循环读取文件
  10. VisualSVN Server提交整个工程项目
  11. debug常规的基本使用
  12. Win7+MATLAB2017a+虚拟光驱
  13. Intellj(IDEA)部署新项目, “warning no artifacts configured” 完美解决方案
  14. 独立显卡的计算机是指,电脑1T独显是什么意思?今天终于明白了
  15. Maven的依赖与最佳配置(转载自Maven实战 作者许晓斌)
  16. 彩色图像处理之色彩学基础
  17. aov()函数lm()函数区别,(I型、Ⅲ型平方和)
  18. android触摸屏idc,android4.0 触摸屏配置
  19. 短视频2020,快手、抖音的分化之年
  20. 破10亿用户的支付宝给支付生态的启示

热门文章

  1. linux集群上的SCHRODINGER 分子对接工作流程
  2. Spring是如何通过IOC来创建对象的?一文足矣
  3. 高斯单机安装; 磁盘容量不足问题
  4. 小学奥数思维训练题(十四)
  5. php xdebug 解密,php xdebug 完整篇
  6. ros入门与控制无人机
  7. 查看操作系统及CPU核数
  8. 共享单车是如何利用物联网卡实现智能开锁的?
  9. 彩虹之上:神经生理学中有效使用彩色图的指南
  10. php 读取图片的属性,PHP 提取图片img标记中的任意属性的简单实例