向现有DataGridView添加功能

时间:2014-06-18 04:43:59

标签: c# winforms datagridview

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

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

我希望能够右键单击并显示一个上下文菜单,允许显示具有标准导出选项的通用菜单。

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

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

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

希望这有意义......

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果您不想派生自己的DGV课程,那么您可以创建一个帮助类,它可以完成您想要的所有内容。

你必须注册每个DGV - 毕竟必须与扩展功能连接。注册可以在表格中自动进行。构造

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