【问题标题】:DataGridView Event Before DataSource ChangesDataSource 更改前的 DataGridView 事件
【发布时间】:2011-06-14 15:37:38
【问题描述】:

有没有办法在 DataGridView 中触发 DataSourceChanging 事件。 DataGridView 有 DataSourceChanged 事件(我相信)在 DataSource 绑定到 DataGridView 之后。我想在属性更改之前做一些事情。

我的一个示例代码...

private void LoadGrid()
{
    //  I do some things like saving user settings here
    DtgRefundAssign.DataSource = BLL.GetDataSource(parameter1, parameter2); //Just to illustrate
    //  And restore them after the datasource is bound

}

我需要以多种形式做类似的事情。只是想开发一个通用程序来执行此操作,无论何时更改数据源。恢复部分可以使用 DataSourceChanged 事件来完成...但是我应该处理哪个事件来完成保存部分?

【问题讨论】:

    标签: c# .net datagridview


    【解决方案1】:

    您可以使用 new/shadows 关键字在子类中创建 shadows/new 属性,具体取决于您使用 c# 还是 vb.net,因为您无法覆盖它。在子类中使用 base.DataSource 调用来访问基类的属性,并在子类中使用 this.DataSource 来访问新的 DataSource 属性。 :D

    【讨论】:

      【解决方案2】:

      我自己没有这样做,但 DataGridView 没有密封,因此您应该能够创建一个继承自它的新类。创建一个新事件“DataSourceChanging”,然后覆盖 DataSource 属性的 Setter,使其首先引发该事件,然后实际设置父类的属性。

      然后,您只需使用该 datagridview 代替默认的,并将您的保存逻辑连接到 DataSourceChanging。

      【讨论】:

      • 是的.. 但是 DataSource 属性不是虚拟的...有没有办法可以覆盖它?
      • 我没想到。 :( 如果它不允许您通过某种诡计覆盖它,您可以创建另一个属性并让该属性引发事件然后设置父数据源。有点混乱,但它会起作用。但请检查第二个答案对这个问题寻求可能的解决方法(我也没有尝试过):stackoverflow.com/questions/82437/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 2019-10-12
      • 2021-04-01
      • 2018-10-03
      • 1970-01-01
      • 2014-03-21
      相关资源
      最近更新 更多