0

こんにちは、フォームがロードされたときに問題なく動作する次のコードがあります。

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    Dim custFont As New PrivateFontCollection()
    Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
    Dim string2 As String = "AntiAlias"

    custFont.AddFontFile("C:\aFont.ttf")
    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias
    e.Graphics.DrawString(string2, New Font(custFont.Families(0), 100, FontStyle.Regular, GraphicsUnit.Pixel), solidBrush, New PointF(10, 60))
End Sub

ただし、フォーム自体のボタンを押すたびにそのフォント テキストを更新する方法が必要です。私はそのようにサブを作ってみました:

Public Sub changeText(ByVal e As System.Windows.Forms.PaintEventArgs, ByVal theText as string)
    Dim custFont As New PrivateFontCollection()
    Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))

    custFont.AddFontFile("C:\aFont.ttf")
    e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias
    e.Graphics.DrawString(theText, New Font(custFont.Families(0), 100, FontStyle.Regular, GraphicsUnit.Pixel), solidBrush, New PointF(10, 60))
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    changeText(Me.OnPaint, "just a test")
End Sub

しかし、私はエラーが発生してしまいます:

アクセス可能な 'OnPaint' がこの数の引数を受け入れないため、オーバーロードの解決に失敗しました。

オンライン: changeText(Me.OnPaint、「ただのテスト」)

どんな助けでも素晴らしいでしょう!ありがとう!

4

1 に答える 1