WinForm"DataGridView单元格提示和相关应用" 之配餐系统的开发
2011-01-22 23:19
465 查看
在winform应用程序开发中,DataGridView是 用的较多的、也(几乎)是数据(列表)显示必用的控件,而此文就是针对DataGridView控件的一些使用做些讲解。
一. DataGridView单元格提示
这个熟悉的朋友会选择CellToolTipTextNeeded 事件实现,也确实,然而此事件有个硬性的条件(或者说 让人感觉很不舒服的限制),如图:
上图中 红色区域[具体见msdn:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.celltooltiptextneeded(VS.80).aspx]就是我所说的限制,这样当我们想实现用代码一行行add Row时,此事件就与我们想要的发生冲突(无法实现单元格提示) ——因为在 DataGridView绑定的数据源(设置了 DataSource)后 或 该控件的 VirtualMode 属性为 true (此时行数无法改变),不能再动态添加行,但我们想要的 单元格提示效果必须还得想办法实现(在最初遇到此问题时,感觉有点儿'山穷水尽疑无路'),而后静下心去想,终用DataGridView的CellMouseEnter事件解决,代码如下:
代码
运行效果:
2.DataGridView属性设置的通用方法
代码
写的很简单,希望对大家多提意见,‘板砖’也悦收,——“您的支持,是我写下去的动力!”。
本文出自 “不停止的飞翔” 博客,请务必保留此出处http://springsmile.blog.51cto.com/1567074/484049
一. DataGridView单元格提示
这个熟悉的朋友会选择CellToolTipTextNeeded 事件实现,也确实,然而此事件有个硬性的条件(或者说 让人感觉很不舒服的限制),如图:
上图中 红色区域[具体见msdn:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.celltooltiptextneeded(VS.80).aspx]就是我所说的限制,这样当我们想实现用代码一行行add Row时,此事件就与我们想要的发生冲突(无法实现单元格提示) ——因为在 DataGridView绑定的数据源(设置了 DataSource)后 或 该控件的 VirtualMode 属性为 true (此时行数无法改变),不能再动态添加行,但我们想要的 单元格提示效果必须还得想办法实现(在最初遇到此问题时,感觉有点儿'山穷水尽疑无路'),而后静下心去想,终用DataGridView的CellMouseEnter事件解决,代码如下:
代码
canInfoDgv.CellMouseEnter += new DataGridViewCellEventHandler(canInfoDgv_CellMouseEnter); void canInfoDgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { DataGridView dgv = (DataGridView)sender; DataGridViewCell cellObj = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; switch (dgv.Columns[e.ColumnIndex].Name) { case "colswName": cellObj.ToolTipText = "点击浏览此食物详细信息!"; break; case "colswWeight": cellObj.ToolTipText = "点击编辑此食物重量!"; Console.WriteLine("canInfoDgv_CellMouseEnter :" + cellObj.Value.ToString()); break; // case "colswYl": SetColswYl_ToolTip(cellObj); break; case "colEdit": cellObj.ToolTipText = "点击编辑菜肴的组成!"; break; case "colDo": cellObj.ToolTipText = "点击删除此食物!"; break; default: break; } dgv = null; cellObj = null; } }
运行效果:
2.DataGridView属性设置的通用方法
代码
/// <summary> /// 设置DataGridView通用属性 /// </summary> /// <param name="dgv"></param> protected void SetDgv_Com(DataGridView dgv) { dgv.AllowUserToAddRows = false; dgv.AllowUserToResizeColumns = false; dgv.AllowUserToResizeRows = false; dgv.RowHeadersVisible = false; dgv.EditMode = DataGridViewEditMode.EditOnEnter; //绑定时不自动创建列(解决列的位置不固定) dgv.AutoGenerateColumns = false; } /// <summary> /// 设置DataGridView交替行样式 /// </summary> /// <param name="dgv"></param> /// <param name="deRowColor">默认行颜色</param> /// <param name="altRowColor">交替行颜色</param> protected void SetDgv_AlternatingRowColor(DataGridView dgv, Color deRowColor, Color altRowColor) { dgv.RowsDefaultCellStyle.BackColor = deRowColor; dgv.AlternatingRowsDefaultCellStyle.BackColor = altRowColor; } /// <summary> /// 设置 DataGridView 特殊样式 [无边框 内容居中 设置表头背景色] /// </summary> protected void SetDgv_SpecialStyle(DataGridView dgvObj, Color HeaderBgColor,Color selectedCellBgColor) { SetDgv_SpecialStyle(dgvObj, HeaderBgColor, selectedCellBgColor, System.Drawing.SystemColors.Window, true); } /// <summary> /// 设置 DataGridView 特殊样式 [无边框 内容居中 设置表头背景色] /// </summary> protected void SetDgv_SpecialStyle(DataGridView dgvObj, Color HeaderBgColor, Color selectedCellBgColor,Color bgColor,bool isNoBorder) { dgvObj.BackgroundColor = bgColor; if (isNoBorder) { dgvObj.BorderStyle = BorderStyle.None; dgvObj.CellBorderStyle = DataGridViewCellBorderStyle.None; dgvObj.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None; } //设置单元格内容居中显示 ColumnHeadersDefaultCellStyle:是设置列标题的样式 dgvObj.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; if (selectedCellBgColor != null) dgvObj.DefaultCellStyle.SelectionBackColor = selectedCellBgColor; dgvObj.DefaultCellStyle.SelectionForeColor = Color.Black; dgvObj.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dgvObj.ColumnHeadersDefaultCellStyle.BackColor = HeaderBgColor; dgvObj.EnableHeadersVisualStyles = false; }
写的很简单,希望对大家多提意见,‘板砖’也悦收,——“您的支持,是我写下去的动力!”。
本文出自 “不停止的飞翔” 博客,请务必保留此出处http://springsmile.blog.51cto.com/1567074/484049
相关文章推荐
- WinForm"DataGridView单元格提示和相关应用" 之配餐系统的开发
- WinForm"DataGridView单元格提示和相关应用" 之配餐系统的开发
- WinForm"DataGridView单元格提示和相关应用" 之配餐系统的开发
- WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发
- WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发
- WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发
- WinForm"搜索提示效果(不错的)实现" 之 配餐系统的开发
- WinForm"仿js星形评分效果"控件制作经验分享(原创) 之配餐系统的开发
- WinForm"ZedGraph柱状图"控件使用经验分享 之配餐系统的开发
- WinForm"ZedGraph柱状图"控件使用经验分享 之配餐系统的开发
- WinForm"立体饼状图实现(附源码示例)" 之配餐系统的开发
- WinForm"立体饼状图实现(附源码示例)" 之配餐系统的开发
- WinForm"立体饼状图实现(附源码示例)" 之配餐系统的开发
- Winform"窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发
- WinForm"tableLayoutPanel和flowLayoutPanel的使用(附源码示例)" 之配餐系统的开发
- Winform"窗体加载闪烁处理、无边框窗体的移动" 之 配餐系统的开发
- WinForm"tableLayoutPanel和flowLayoutPanel的使用(附源码示例)" 之配餐系统的开发
- WinForm"reportViewer报表[矩阵]的使用(一)(附源码示例)" 之配餐系统的开发
- WinForm"reportViewer报表[矩阵]的使用(一)(附源码示例)" 之配餐系统的开发
- WinForm"tableLayoutPanel和flowLayoutPanel的使用(附源码示例)" 之配餐系统的开发