none
基类里面有一个按钮。在扩展类里面,写基类按钮的Click事件。得到警告:事件Click为知道,因此无法更改。谢谢。 RRS feed

  • 问题

  • 基类里面有一个按钮。在扩展类里面,写基类按钮的Click事件。得到警告:事件Click为知道,因此无法更改。谢谢。

    附图:

    NewButton 为基类按钮。

    扩展类部分代码:

    Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewButton.Click
    '.................        
    End Sub

    2015年3月12日 13:53

答案

  • 问题已经找到。。在扩展类界面设计窗口双击按钮。会自动生成如下代码,把这个代码删除,就不提示报错了。不知什么原因。
      Private Sub InitializeComponent()
            Me.SuspendLayout()
            '
            'OrderDocuments
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.ClientSize = New System.Drawing.Size(870, 405)
            Me.Name = "OrderDocuments"
            Me.Text = ""
            Me.ResumeLayout(False)
    
        End Sub

    2015年3月13日 12:16

全部回复

  • 你要看看,基類的NewButton.Click是不是 ReadOnly,從錯誤信息中,它寫這個Click 是只讀

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆標示為解答以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to clickMark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2015年3月13日 2:12
  • 基类里面有一个按钮。在扩展类里面,写基类按钮的Click事件。得到警告:事件Click为知道,因此无法更改。谢谢。

    附图:

    NewButton 为基类按钮。

    扩展类部分代码:

    Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewButton.Click
    '.................        
    End Sub

    这需要看基类是如何定义的。

    我试着将一个usercontrol 派生出一个子类,在子类里定义click事件,没能够重现你的问题。

    你可以分享下你的基类(可以去掉敏感数据,最好包括designer.vb里的代码),以及项目的.net 版本和VS版本。

    一般定义一个事件是用以下方式,你也可以在基类里尝试这样定义。

      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


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.



    2015年3月13日 2:34
    版主
  • 基类designer.vb代码:

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class FormTest
        Inherits System.Windows.Forms.Form
    
        'Form 重写 Dispose,以清理组件列表。
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
    
        'Windows 窗体设计器所必需的
        Private components As System.ComponentModel.IContainer
    
        '注意: 以下过程是 Windows 窗体设计器所必需的
        '可以使用 Windows 窗体设计器修改它。
        '不要使用代码编辑器修改它。
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.Button1 = New System.Windows.Forms.Button()
            Me.SuspendLayout()
            '
            'Button1
            '
            Me.Button1.Location = New System.Drawing.Point(76, 89)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(80, 39)
            Me.Button1.TabIndex = 0
            Me.Button1.Text = "Button1"
            Me.Button1.UseVisualStyleBackColor = True
            '
            'FormTest
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(294, 200)
            Me.Controls.Add(Me.Button1)
            Me.Name = "FormTest"
            Me.Text = "FormTest"
            Me.ResumeLayout(False)
    
        End Sub
        Friend WithEvents Button1 As System.Windows.Forms.Button
    End Class

    基类界面:

     

    扩展类代码:

    Public Class Test Inherits FormTest Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click MsgBox("asdf") End Sub End Class



    • 已编辑 可推 2015年3月13日 12:06 补充说明
    2015年3月13日 12:02
  • 问题已经找到。。在扩展类界面设计窗口双击按钮。会自动生成如下代码,把这个代码删除,就不提示报错了。不知什么原因。
      Private Sub InitializeComponent()
            Me.SuspendLayout()
            '
            'OrderDocuments
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.ClientSize = New System.Drawing.Size(870, 405)
            Me.Name = "OrderDocuments"
            Me.Text = ""
            Me.ResumeLayout(False)
    
        End Sub

    2015年3月13日 12:16