vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Grafik, Paint, Refresh, einfach alles ... 
Autor: MikaDoProxx
Datum: 14.02.04 15:28

Hallo.


Ich wollte jetzt einmal mein Programm ein bisschen mit Grafik-Sachen "verschönern".
Dafür habe ich jetzt mal ein kleines Beispiel vorbereitet, da das "echte" Listing 13'532 Zeilen umfassen würde.

Folgendes soll eigentlich geschehen:
In eine PictureBox werden zwei schwarze Linien gezeichnet.
Erfält die erste TextBox den Focus, so soll die erste Linie rot gezeichnet werden und die zweite schwarz.
Erfält die zweite TextBox den Focus, so soll die zweite Linie rot gezeichnet werden und die erste schwarz.

Hier ist das Listing des Beispielformulars:


Public Class Form1
    Inherits System.Windows.Forms.Form
 
#Region " Vom Windows Form Designer generierter Code "
 
    Public Sub New()
        MyBase.New()
 
        ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
        InitializeComponent()
 
        ' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
 
    End Sub
 
    ' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu 
    ' bereinigen.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub
 
    ' Für Windows Form-Designer erforderlich
    Private components As System.ComponentModel.IContainer
 
    'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer 
    ' erforderlich
    'Sie kann mit dem Windows Form-Designer modifiziert werden.
    'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
	Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
	Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
	Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
	<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
		Me.TextBox1 = New System.Windows.Forms.TextBox
		Me.TextBox2 = New System.Windows.Forms.TextBox
		Me.PictureBox1 = New System.Windows.Forms.PictureBox
		Me.SuspendLayout()
		'
		'TextBox1
		'
		Me.TextBox1.Location = New System.Drawing.Point(16, 16)
		Me.TextBox1.Name = "TextBox1"
		Me.TextBox1.TabIndex = 0
		Me.TextBox1.Text = "TextBox1"
		'
		'TextBox2
		'
		Me.TextBox2.Location = New System.Drawing.Point(16, 40)
		Me.TextBox2.Name = "TextBox2"
		Me.TextBox2.TabIndex = 1
		Me.TextBox2.Text = "TextBox2"
		'
		'PictureBox1
		'
		Me.PictureBox1.Location = New System.Drawing.Point(128, 16)
		Me.PictureBox1.Name = "PictureBox1"
		Me.PictureBox1.Size = New System.Drawing.Size(100, 100)
		Me.PictureBox1.TabIndex = 3
		Me.PictureBox1.TabStop = False
		'
		'Form1
		'
		Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
		Me.ClientSize = New System.Drawing.Size(248, 134)
		Me.Controls.Add(Me.PictureBox1)
		Me.Controls.Add(Me.TextBox2)
		Me.Controls.Add(Me.TextBox1)
		Me.Name = "Form1"
		Me.Text = "Form1"
		Me.ResumeLayout(False)
 
	End Sub
 
#End Region
 
	Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As _
  System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
		Dim gr As Graphics = e.Graphics
		Dim ps As New Pen(Color.Black, 2)
		Dim pr As New Pen(Color.Red, 2)
		Dim P1 As New Point(0, 0)
		Dim P2 As New Point(0, 100)
		Dim P3 As New Point(100, 0)
		Dim P4 As New Point(100, 100)
 
		gr.DrawLines(ps, New Point() {P1, P2})
		gr.DrawLines(ps, New Point() {P3, P4})
 
		If (Me.TextBox1.Focus = True) Then
			gr.DrawLines(pr, New Point() {P1, P2})
		ElseIf (Me.TextBox2.Focus = True) Then
			gr.DrawLines(pr, New Point() {P3, P4})
		End If
	End Sub
 
	Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles TextBox1.Enter, TextBox2.Enter
		sender.SelectAll()
		Me.PictureBox1.Refresh()
	End Sub
 
	Private Sub TextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles TextBox1.Leave, TextBox2.Leave
		Me.PictureBox1.Refresh()
	End Sub
End Class
Nun tritt aber folgender Fehler auf:
Sobald die Zeile mit dem Inhalt "Me.PictureBox1.Refresh()" erreicht ist, wird scheinbar das komplette Formular neu geladen.
Wenn ich jetzt von der TextBox1 in die TextBox zwei entere, geht es bis zur besagten Zeile und dann wird automatisch wieder die Konfiguration geladen, wie sie beim ersten Laden geladen wurde.

Meine Frage nun: Wie bekomme ich es hin, dass das Programm so funktioniert, wie ganz oben beschrieben?


Gruß Mika
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Grafik, Paint, Refresh, einfach alles ...1.398MikaDoProxx14.02.04 15:28
Re: Grafik, Paint, Refresh, einfach alles ...505WaldiMaywood16.02.04 13:44
Re: Grafik, Paint, Refresh, einfach alles ...484ModeratorDaveS16.02.04 14:28
Danke476MikaDoProxx18.02.04 16:42

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel