在我的 winforms 应用程序中,我有一个包含 DataGridView 的 UserControl。当需要时,我实例化此 UserControl 并将其加载到主窗体 (frmMain) 的面板中。我的问题是弄清楚如何响应或监听我的 UC 的 DataGridView 中引发的事件。例如,我想在主窗体中处理 DataGridView 的 CellDoubleClick 事件,而不是通过 UC。
这可能吗?我曾想过在双击网格中的单元格时更新属性,然后让我的主窗体在该属性更改时执行任何操作 - 因此我想到使用 INotifyPropertyChanged。然而,我不太清楚如何在 m 场景中使用它,并且非常感谢在这方面的一些帮助,或者如果有人可以建议替代解决方案。
非常感谢!
最佳答案
您的用户控件必须封装一些逻辑,因此如果您想按照您所描述的方式处理控件中的 DataGridView 事件,您可能会遗漏用户控件和封装的一些内容。从技术上讲,有两种方法可以做到这一点:
- 在 DataGridView 类型的用户控件中创建一个公共(public)属性。
- 制作一个事件包装器。您需要在用户控件中创建一个事件,该事件在 DataGridView CellDoubleClick(或任何)被触发时引发,并且在您的调用代码中您将处理此事件包装器。
第二种方法更符合逻辑,因为控件的内部逻辑被封装起来,并且您可以为组件的最终用户提供比 CellDoubleClidk 或其他更具逻辑性和更有意义的事件。
关于events - 观察通过 Winforms UserControl 实例创建的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577207/