首页 文章

向现有DataGridView添加功能

提问于
浏览
0

我在整个WinForms应用程序中都有datagridviews .

我希望能够在我的所有datagridview上添加功能,而不必在每个表单上编写代码 . 一个地方中的一个方法/事件添加到所有现有网格中 .

我想能够右键单击并有一个contextmenu弹出窗口,允许出现具有标准导出选项的通用菜单 .

我知道我可以使用扩展方法添加功能,但我不认为这是针对这种情况的正确方法 .

我想如果我不必从datagridview类派生一个新类并将我的功能添加到派生类,那么我将不得不将我所有的dgv更改为派生的dgv类 .

我是否可以添加或扩展现有的datagridview类,并添加全局通用方法和事件以实现通用弹出菜单

希望这是有道理的....

2 回答

  • 1

    参考这篇文章,它已导出到Excel选项和其他几个,希望这将帮助您 . http://www.codeproject.com/Articles/26263/Extending-the-DataGridView

  • 1

    如果你不想派生自己的DGV类,那么你可以创建一个 helper class ,它可以完成你想要的所有东西 .

    你必须使用 register 每个DGV - 不管怎样,必须有扩展功能的连接 . 注册可以在Forms的构造函数中自动完成 .

    在其 registerDGV(DataGridview DGV) 方法中,助手类将订阅您想要的所有DGV事件并执行您需要的所有装饰 .

    这只是一个很小的例子:

    public Form1()
    {
        InitializeComponent();
        DGVhelper.registerDGV(dataGridView1);
    }
    
    DGVhelperClass DGVhelper= new DGVhelperClass ();
    
    
    class DGVhelperClass 
    {
        public void registerDGV(DataGridView DGV)
        {
            DGV.MouseDown += DGV_MouseDown;
            //...
            DGV.BackgroundColor = Color.LightSlateGray;
            //..
        }
    
        void DGV_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) MessageBox.Show("just", "for show");
        }
    
    }
    

    如果不需要状态信息,您可能希望生成帮助程序类 static .

相关问题