フォーム上のコントロールに対してPaint
イベントを処理しようとしました。しかし、イベントは決して処理されません。私は何が間違っているのか分かりません。私はこれを実証するための非常にシンプルなのWinFormsプロジェクトを作成しました(私は他にあり何もありませんことを示すために生成されたデザイナーのコードを含めました):VScrollbarペイントイベントの処理
Form1.vbを
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler VScrollBar1.Paint, AddressOf VScrollBar1_Paint
End Sub
Private Sub VScrollBar1_Paint (ByVal sender As Object, ByVal e As PaintEventArgs)
Dim str As String = "test"
System.Windows.Forms.MessageBox.Show(str)
End Sub
End Class
Form1.Designer.vb
を<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<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
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.VScrollBar1 = New System.Windows.Forms.VScrollBar()
Me.SuspendLayout
'
'VScrollBar1
'
Me.VScrollBar1.Location = New System.Drawing.Point(26, 56)
Me.VScrollBar1.Name = "VScrollBar1"
Me.VScrollBar1.Size = New System.Drawing.Size(17, 80)
Me.VScrollBar1.TabIndex = 0
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(284, 261)
Me.Controls.Add(Me.VScrollBar1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(false)
End Sub
Friend WithEvents VScrollBar1 As System.Windows.Forms.VScrollBar
End Class
イベントは決して処理されませんが、コントロールは正しく描画されます。私は何が欠けていますか?
スクロールバーはペイントイベントを発生させません。それらはシステムによって内部的に描画されます。オーナー描画のための施設はありません。スクロールバーを尋ねると、スクロールバーが表示されます。標準的なシステムの外観をオーバーライドするのは、決してよい理由ではありません。 –
コントロールのイベントリストを開くと、ペイントイベントは表示されません。あなたは混乱するようなものではないものを扱おうとしています。 – Plutonix