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
}
C# WinForm dataGridView 技巧小结的更多相关文章
- 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案
上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...
- C#实现WinForm DataGridView控件支持叠加数据绑定
我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...
- PowerDesigner实用技巧小结(3)
PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ...
- PowerDesigner实用技巧小结(2)
PowerDesigner实用技巧小结 1.ORACLE数据库建模时,由于ORACLE的表名.字段名如果是小写会有一定的麻烦,需要将小写转化为大写? (1)在打开pdm的情况下,进入Tools-Mod ...
- .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧
原文:.Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 最近看到博客园入门教学文章比较流行,自己最近又偷懒比较多,没啥心得,不妨写一篇没啥深度的入门文章吧. 话说有了WebB ...
- WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决
背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...
- C# winform DataGridView 常见属性
C# winform DataGridView 属性说明① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删 ...
- CentOS系统中的passwd命令实用技巧小结
这篇文章主要介绍了Linux系统中的passwd命令实用技巧小结,是Linux入门学习中的基础知识,需要的朋友可以参考下 先来回顾一下passwd命令的基本用法: Linux passwd命令用来 ...
- Winform Datagridview 单元格html格式化支持富文本
Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...
随机推荐
- oracle动态注冊參数local_listener
local_listener參数有两种书写格式,提供了不同的功能. 监听文件上,1521和1526port上都有动态监听port. [oracle@dbsv admin]$ cat listener. ...
- hdu1081(最大子矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081 分析:a[i][j]代表第i行,前j个数据的和:那么由a[i][j]可得sum[k][long] ...
- LDA主题模型学习笔记3.5:变分參数推导
如今来推导一下得到变分參数更新式的过程.这一部分是在论文的附录中,为避免陷入过多细节而影响总体理解.能够在刚開始学习LDA的时候先不关注求解细节.首先要把L写成关于γ,ϕ\gamma,\phi函数.依 ...
- Swift 的类、结构体、枚举等的构造过程Initialization(下)
类的继承和构造过程 类里面的全部存储型属性--包含全部继承自父类的属性--都必须在构造过程中设置初始值. Swift 提供了两种类型的类构造器来确保全部类实例中存储型属性都能获得初始值,它们各自是指定 ...
- C# 通信学习笔记
C# 通信学习笔记 DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不 ...
- android_重写button样式
这样的button样式应该源自IOS.假设安卓上实现,则须要使用android上面的layer-list来实现. 事实上layer-list有点像framlayout,作用就是覆盖. 先说一下实现原理 ...
- Oracle历史记录
请问如何查询ORACLE的历史操作记录!!!!!------解决方案-------------------- 有一个专门存储操作的数据库表..select t.SQL_TEXT, t.FIRST_LO ...
- http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed wit
异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the j ...
- 集合中Set_List必须覆盖 hashCode()与 equals()
集合中Set_List必须覆盖 hashCode()与 equals() @Override public int hashCode() { System.out.println("==== ...
- Java的wait(), notify()和notifyAll()使用心得(转)
本篇文章是对java的 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下wait(),notify()和notifyAll()都是java.lang.Obj ...