Visual Studio设计器实现中的表单继承

时间:2010-04-30 06:50:37

标签: vb.net forms inheritance visual-studio-2005 visual-studio-2003

我正在将项目从Visual Studio 2003迁移到2005并且刚刚看到了

  

事件Click是只读的,无法更改

当使用继承的表单时,无论基本表单控件上的修饰符如何,都将在设计器中从基本只读中创建所有控件(尽管在2003年它没有以这种方式工作)。

我发现这个帖子提到此功能已被暂时“禁用” http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/c25cec28-67a5-4e30-bb2d-9f8dbd41eb3a

任何人都可以确认此功能是否已被使用?或者如何围绕它进行编程以便能够使用基本控制事件并且还有设计师?

这是我找到的一种方式,但是当它曾经为你做管道时非常痛苦。甚至只是隐藏你现在手动执行的一个控件。

Public Class BFormChild

    Friend Overrides Sub cmdApply_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MyBase.cmdApply_Click(sender, e)
    End Sub
    Friend Overrides Sub cmdCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MyBase.cmdCancel_Click(sender, e)
    End Sub
    Friend Overrides Sub cmdOk_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MyBase.cmdOk_Click(sender, e)
    End Sub

End Class

1 个答案:

答案 0 :(得分:3)

生成事件的基类需要标准事件生成模式。必须在代码中完成,设计人员无法自动生成它。它永远不会。

Public Class BFormBase
  Public Event ApplyClicked As EventHandler

  Protected Overridable Sub OnApplyClicked(ByVal e As EventArgs)
    '--- Possible default implementation here
    '...
    RaiseEvent ApplyClicked(Me, e)
  End Sub

  Private Sub cmdApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdApply.Click
    OnApplyClicked(e)
  End Sub