【问题标题】:Add functionality to existing DataGridView向现有 DataGridView 添加功能
【发布时间】:2014-06-18 04:43:58
【问题描述】:

我的整个 WinForms 应用程序都有数据网格视图。

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

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

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

如果我不必从 datagridview 类派生一个新类并将我的功能添加到派生类,我想这样做,因为我必须将所有 dgv 更改为派生 dgv 类。

是否可以添加或扩展现有的datagridview类,并添加一个全局泛型方法和事件来实现泛型弹出菜单

希望这有意义....

【问题讨论】:

  • 派生类是合适的解决方案。更改所有 DataGridView 以使用新类可以通过搜索和替换轻松完成。

标签: c# winforms datagridview


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您不想派生自己的 DGV 类,那么您可以创建一个 helper 类,它可以做您想做的所有事情。

    您必须向其注册每个 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2017-03-25
      • 2017-03-27
      • 2017-05-27
      相关资源
      最近更新 更多