zoukankan      html  css  js  c++  java
  • 扩展 DataGridView 的功能(一)

    grid 控件的重要性无需多说了,但要找一个好用的却是难上加难

    虽然市面上有很多成熟公司的成熟产品, 但那些东西毕竟太贵了,所以还是自己写比较实在(什么, 破解版?还是算了吧)

    自vs2005 以后,vs 系统自带了一个 DataGridView 控件, 这个控件的功能是很强大的,扩展性也不错, 所以我们就以它为基础吧

    开始统计需要扩展的功能先:

    1.显示行号

    2.加入可以输入文字的 DataGridViewComboBoxCell

    2.可分组折叠

    3.合并单元格

    4.Undo/Redo的支持

    5.其他。。。。。

    定义类

        /// <summary>
        
    /// 扩展的 DataGridView
        
    /// </summary>
        public class DataGridViewEx : DataGridView
        {
        }

    先来一个最简单的:显示行号

    这里我们用到了一个事件 RowPostPaint, 查看MSDN后可知该事件是在“绘制 DataGridViewRow 后发生” 

    DataGridView 在绘制 DataGridViewRow 时没有处理行号, 那就由 DataGridViewEx 来处理吧

    知道了原理,添加行号就很简单了, DrawString 就OK。

    给出主要的代码实现 :

            void DataGridViewEx_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                
    if (showRowHeaderNumbers)
                {
                    
    string title = (e.RowIndex + 1).ToString();
                    Brush bru 
    = Brushes.Black;
                    e.Graphics.DrawString(title, DefaultCellStyle.Font,
                        bru, e.RowBounds.Location.X 
    + RowHeadersWidth / 2 - 4, e.RowBounds.Location.Y + 4);
                }
            }

    完成后的效果:

    代码下载


  • 相关阅读:
    Android SDK更新 Connection to http://dlssl.google.com refused 解决方法
    rsync服务架设(数据同步|文件增量备份)
    cocos2dx 环境搭建
    GMT、UTC、PDT 时间是什么?Linux下如何调整时区
    测试日志
    处理Oracle中杀不掉的锁
    熟悉常用的Linux操作
    综合练习:英文词频统计
    编译原理
    字符串、组合数据类型练习
  • 原文地址:https://www.cnblogs.com/michaelhuwei/p/1299455.html
Copyright © 2011-2022 走看看