[.NET] Visual Basic Erklärung bitte!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Huaba, 7. Februar 2009 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 7. Februar 2009
    Visual Basic Erklärung bitte!

    so, das bleibt:
    und noch ne andere sache. dieses
    die ruf ich ja mit
    auf. was muss ich da hinschreiben? es geht zwar mit ZeichneSeitStrichRechts(sender,e), aber was soll/muss/kann ich da übergeben? und was heißt handles Me.paint :D? weil in dem beispiel bräucht ich ja bei SeitSchritt das gar nicht, weil ich ja nur iwelche parameter übergebe.. aber ohne bringt er fehlermeldungen =/
     

  2. Anzeige
  3. #2 7. Februar 2009
    AW: Visual Basic Endlosschleife!?

    Also wenn ich das richtig verstehe ist der sender mal this (weiß net ob das in VB auch this heißt), also die Form von der du die funktion aus aufrufst.
    Und e sind dann argumente die übergeben werden. kannst ja ma mit null(heißt das jetzt so in VB??) versuchen.

    Greetz Jojo
     
  4. #3 8. Februar 2009
    AW: Visual Basic Erklärung bitte!

    Ich nehm das Ereignis jetzt mal ein bisschen auseinander:

    Sender : ist wie bereits richtig gesagt das Steuerelement, dass das Ereignis aufgerufen hat und sollte deswegen den wert Me annehmen. (oder wenn du es in einem anderen ereignis aufrufst, kannst du auch sender übergeben)

    PaintEventArgs: das sind die Argumente, die übergeben werden, damit dein Prog. dann weiß wo und in welchem bereich du zeichnen willst. Deswegen ist es nicht sinnvoll hier ein null zu übergeben.
    Hier ist mal ein kleiner Codeausschnitt, der zeigt, wie der Aufruf aufgebaut sein sollte (im Beispiel wird auf die gesamte Form gezeichnet):
    Code:
    [COLOR=blue]Private Sub [/COLOR][COLOR=black]button1_Click([/COLOR][COLOR=blue]ByVal [/COLOR][COLOR=black]sender [/COLOR][COLOR=blue]As Object[/COLOR][COLOR=black], [/COLOR][COLOR=blue]ByVal [/COLOR][COLOR=black]e [/COLOR][COLOR=blue]As [/COLOR][COLOR=black]EventArgs)
     [/COLOR][COLOR=blue]Dim [/COLOR][COLOR=black]pe [/COLOR][COLOR=blue]As [/COLOR][COLOR=black]PaintEventArgs [/COLOR][COLOR=blue]= New [/COLOR][COLOR=black]PaintEventArgs([/COLOR][COLOR=blue]Me[/COLOR][COLOR=black].CreateGraphics, [/COLOR][COLOR=blue]New [/COLOR][COLOR=black]Rectangle([/COLOR][COLOR=maroon]0[/COLOR][COLOR=black], [/COLOR][COLOR=maroon]0[/COLOR][COLOR=black], [/COLOR][COLOR=blue]Me[/COLOR][COLOR=black].Width, [/COLOR][COLOR=blue]Me[/COLOR][COLOR=black].Height))
     ZeichneSeitStrichRechts(sender, pe)
    [/COLOR][COLOR=blue]End Sub[/COLOR]
    
     
  5. #4 8. Februar 2009
    AW: Visual Basic Erklärung bitte!

    aaa super geil, danke :)

    BW sind raus!

    aber dann noch zu dieser einfachen Sub:
    Code:
    Public Class Form1
     Private Sub Form_Load(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
     Dim brushBrightBlue As SolidBrush = New SolidBrush(Color.DeepSkyBlue)
     e.Graphics.FillEllipse(brushBrightBlue, 100, 140, 100, 100)
     End Sub
    End Class
    Kann ich mir das so vorstellen:

    Die Sub Form_Load wird ja als erstes geladen. sie zeichnet auf das Objekt "e" eine Graphic(s), nämlcih ein Rechteck mit den in der Klammer angegebenen Parametern.

    soweit richtig? wenn nicht, bitte verbessern :p
     
  6. #5 8. Februar 2009
    AW: Visual Basic Erklärung bitte!

    Im großen und ganzen hast du das schon verstanden. Ich kann aber zwei (Denk-)Fehler erkennen.

    1. Form_Load hat nichts mit der Funktion zu tun, die nach dem Start der Form aufgerufen wird, sondern ist einfach nur der Name für dein OnPaint-Ereignis, also das Ereignis, was beim neuzeichnen der Form aufgerufen (übrigens auch beim Start, weswegen also trotzdem am Anfang gezeichnet wird).

    2. Du willst ein Rechteck zeichnen, rufst aber FillElipse auf? FillRectangle ist bestimmt das, was du meinst.

    Also nochmal zusammengefasst. Jedesmal, wenn die Form neu gezeichnet wird (z.B. Größe ändern, minimieren, ...), muss das Paint Ereignis dein Rechteck neuzeichnen, da es sonst verschwindet. Der Code stimmt soweit.
     
  7. #6 8. Februar 2009
    AW: Visual Basic Erklärung bitte!

    Code:
    Public Class Form1
     Private Sub Form_Load(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
     Dim brushBrightBlue As SolidBrush = New SolidBrush(Color.DeepSkyBlue)
     e.Graphics.FillEllipse(brushBrightBlue, 100, 140, 100, 100)
     End Sub
    End Class
    Also neuer Versuch:

    Ich starte das Programm. die Sub Form_Load wird nun geladen...
    Als Parameter habe ich sender und e weil...?!?
    Handles Me.Paint weil...?!

    anschließend zeichne ich auf die Form e eine Ellipse mit den Parametern blabla...

    ich checks nich ;(
     
  8. #7 8. Februar 2009
    AW: Visual Basic Erklärung bitte!

    Ok ich machs mal ganz leicht:

    Das Programm wird gestartet (ab jetzt spricht das Programm)
    --> He ich hab ja noch garnichts dargestellt, das muss sich sofort ändern
    --> ich such mir mal die Methode, die mein Fenster neuzeichnet
    --> Form_Load ist die gewünschte Funktion, da ja dahinter steht, dass sie Me.Paint behandelt, also mein neuzeichnen
    --> so das ruf ich jetzt mal auf: Sender bin natürlich ich (Me), und die PaintEventArgs kriegt die Methode auch von mir: Dafür übergebe ich meine Zeichenfläche (e.Graphics) und den Bereich, wo gezeichnet werden soll (Mal kurz nicht das Programm: stell dir die Parameter vor wie ein Briefumschlag: Draußen steht der Absender dran (sender) und drinnen ist ein Blatt papier, auf das gezeichnet werden soll, und zwar mit einem Rechteck, in das das Bild kommt)
    --> Jetzt hab ich alles gezeichnet und kann das machen, was ich jeden Abend mache: Ich versuche die Weltherrschaft an mich zu reißen.

    So ich hoffe das war einigermaßen verständlich. Das mit dem zeichnen hast du ja verstanden.
     

  9. Videos zum Thema
Die Seite wird geladen...