2013-11-08 2 views
0

Привет всем У меня есть следующий код, который работает просто отлично, когда мои формы нагрузки до:VB.net изменения текста в OnPaint суб

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, "просто тест")

Любая помощь будет здорово! Благодаря!

ответ

0

Переместить строку из уровня класса, так что вы можете изменить его:

Imports System.Drawing.Text 
Public Class Form1 

    Private string2 As String = "AntiAlias" 
    Private custFont As New PrivateFontCollection() 

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     custFont.AddFontFile("C:\aFont.ttf") 
    End Sub 

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
     Using solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255)) 
      Using fnt As New Font(custFont.Families(0), 100, FontStyle.Regular, GraphicsUnit.Pixel) 
       e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias 
       e.Graphics.DrawString(string2, fnt, solidBrush, New PointF(10, 60)) 
      End Using 
     End Using 
    End Sub 

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

End Class 
+0

, который работает! Спасибо за помощь, Idle_Mind! – StealthRT