3

我正在将一个项目从 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
4

1 回答 1

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
于 2010-04-30T13:32:13.217 回答