Public Class Form1 Private Flag(2) As Boolean Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Select Case Flag(0) Case False Button1.BackColor = Color.Red Flag(0) = True Case True Button1.BackColor = Color.FromKnownColor(KnownColor.ControlLight) Flag(0) = False End Select End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Select Case Flag(1) Case False Button2.BackColor = Color.Red Flag(1) = True Case True Button2.BackColor = Color.FromKnownColor(KnownColor.ControlLight) Flag(1) = False End Select End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Select Case Flag(2) Case False Button3.BackColor = Color.Red Flag(2) = True Case True Button3.BackColor = Color.FromKnownColor(KnownColor.ControlLight) Flag(2) = False End Select End Sub End Class
Private Sub ButtonColorChange_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click
If sender.BackColor <> Color.Red Then
sender.BackColor = Color.Red
Else
sender.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
End If
End Sub
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
MyBase.OnClick(e)
End Sub
生成されたコードで、MyBaseで修飾しているのは、継承元のButtonコントロールを指します。
なので、
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
MyBase.BackColor = Color.Red
MyBase.OnClick(e)
End Sub
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class CustomControl1
Inherits System.Windows.Forms.Control
'Control は、コンポーネント一覧に後処理を実行するために、dispose をオーバーライドします。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'コントロール デザイナで必要です。
Private components As System.ComponentModel.IContainer
' メモ: 以下のプロシージャはコンポーネント デザイナで必要です。
' コンポーネント デザイナを使って変更できます。
' コード エディタを使って変更しないでください。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub
End Class
2行目と3行目のとこだけ修正します。
【修正前】
Partial Class CustomControl1
Inherits System.Windows.Forms.Control
【修正後】
Partial Class MyButton
Inherits System.Windows.Forms.Button
これで、Buttonコントロールから継承したMyButtonというコントロールが作成されます。
これで、CustomControl1.Designer.vbは閉じます。
次に、CustomControl1.vbを編集します。
最初は、
Public Class CustomControl1
Protected Overrides Sub OnPaint(ByVal pe As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(pe)
'カスタム描画コードをここに追加します。
End Sub
End Class
になってます。
まず最初に、1行目の
Public Class CustomControl1
を
Public Class MyButton
に変更します。