• WinForm"DataGridView单元格提示和相关应用" 之配餐系统的开发


            在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事件解决,代码如下:

       

    代码
    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>
    protectedvoid 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>
    protectedvoid SetDgv_AlternatingRowColor(DataGridView dgv, Color deRowColor, Color altRowColor)
    {
    dgv.RowsDefaultCellStyle.BackColor
    = deRowColor;
    dgv.AlternatingRowsDefaultCellStyle.BackColor
    = altRowColor;
    }

    ///<summary>
    /// 设置 DataGridView 特殊样式 [无边框 内容居中 设置表头背景色]
    ///</summary>
    protectedvoid SetDgv_SpecialStyle(DataGridView dgvObj, Color HeaderBgColor,Color selectedCellBgColor)
    {
    SetDgv_SpecialStyle(dgvObj, HeaderBgColor, selectedCellBgColor, System.Drawing.SystemColors.Window,
    true);
    }

    ///<summary>
    /// 设置 DataGridView 特殊样式 [无边框 内容居中 设置表头背景色]
    ///</summary>
    protectedvoid 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;
    }

            写的很简单,希望对大家多提意见,‘板砖’也悦收,——“您的支持,是我写下去的动力!”。

  • 相关阅读:
    Ubuntu 14.04/16.04/18.04安装最新版Eigen3.3.5
    Ubuntu16.04系统安装谷歌浏览器(Google chorm)
    Anaconda3(6)安装opencv
    Ubuntu 16.04 几个国内更新源
    Anaconda3(4-1)ubuntu1604安装pytorch
    Anaconda3(5-3)ubuntu1604安装pycharm
    无人机姿态定位
    Ubuntu16.04--安装Anaconda
    Airsim(1)安装配置win10-vs2015-cuda10-opencv394+扩展版版本+cmake
    cuda加速拼接
  • 原文地址:https://www.cnblogs.com/know/p/1942252.html
Copyright © 2020-2023  润新知