VB.NET Ereignisse

René Paschold

Erfahrenes Mitglied
Hallo,

ich habe in der letzten Zeit mal ein bischen mit C# gearbeitet und nun mit
VB.NET

In Csharp hatte ich bei einem Button z.B. im Eigenschaftsfenster um die
Ereignisse festzulegen. OnClick, OnBlur, OnChange usw.

Wo ist das denn in VB.NET hingekommen ???

Grüße
Rene
 

Dario Linsky

Erfahrenes Mitglied
bei visual basic gibt's neben dem eigenschaftenfenster kein eigentliches fenster für die ereignisse, sowas kenn ich auch eigentlich nur von borland (delphi und c++ builder).
du musst im code erstmal eine ereignisprozedur hinzufügen, dann hast du oben im code-fenster eine combobox mit den einzelnen ereignissen.

in vb6 ist das jedenfalls so. ich find das auch etwas unhandlich, aber vielleicht ist das in vb.net ja inzwischen anders?
 

René Paschold

Erfahrenes Mitglied
In C# ist das definitiv so da ich das zuhause ja schon getestet habe. Hier habe ich nur VB.NET installiert. Da ist das nicht dabei.

Ich werde das aber mal kurz prüfen so wie du es gerade gesagt hat.. Sekunde...

hmm ich finde da nichts :(

In C# ist das so, das du dann in ein Ereignis doppel klicken kannst und wie bei Delphi erstellt er dir dann die Function.

Du kannst auch dort dann eigene Functionen pro Event anwenden. Das geht so bei VB.NET offensichtlich nicht.

Wenn ich jetzt bei einem Button einen MouseOver Effekt will dann muss ich das wohl umständlich programmieren, bei c# ist es ein doppelklick :rolleyes:
 

Dario Linsky

Erfahrenes Mitglied
doch, das gibt es. direkt oben im codefenster sollten zwei comboboxen sein. die linke ist für das objekt und die rechte für das ereignis des objekts, dass links ausgewählt wurde.
das wurde soweit ich weiss auch nach .net übernommen. aber wieso willst du überhaupt mit visual basic anfangen? c# bietet doch viel mehr möglichkeiten.
 

René Paschold

Erfahrenes Mitglied
Ich habs gefunden.

Ich schreibe dir mal einen Text was ich in die Newgroup gepostet habe damit du weist was genau ich will:

Hallo,

ich habe mir folgende Sub geschrieben:

Private Sub SetActiveButton(ByVal Button)
Button.BackColor = Color.FromKnownColor(KnownColor.GrayText)
End Sub

Jetzt habe ich 20 Buttons die jeweils diese Sub verwenden sollen. Muss ich das jetzt so machen:

Private Sub Button_A_Click(ByVal sender As System.Object, ByVal e As
SetActiveButton(CType(sender, Button))
End Sub

Private Sub Button_B_Click(ByVal sender As System.Object, ByVal e As
SetActiveButton(CType(sender, Button))
End Sub

Private Sub Button_C_Click(ByVal sender As System.Object, ByVal e As
SetActiveButton(CType(sender, Button))
End Sub

Oder gibt es eine Möglichkeit dem Programm die Sub direkt beim Klick zuzuweisen? So wie in C# oder Delphi??!

Denn ist ja schon ne Menge Code ...

Gruß
Rene
 

Dario Linsky

Erfahrenes Mitglied
nein, das geht schon ziemlich viel einfacher. das gehört ausnahmsweise sogar man zu den sachen, bei denen visual basic die nase vorn hat. ;)

du kannst einfach ein steuerelementfeld erstellen, damit hast du ein array aus gleichartigen steuerelementen. leg einfach zwanzig buttons auf das formular und benenn alle gleich, dann wirst du gefragt, ob du ein steuerelementfeld anlegen willst. da antwortest du auf ja.

dann hast du eine ereignisprozedur für alle zwanzig buttons und zusätzlich wird der index des aufrufenden buttons als parameter an die funktion übergeben.
das sieht dann etwa so aus:
Code:
Private Sub Command1_Click(Index As Integer)
Command1(Index).BackColor = Color.FromKnownColor(KnownColor.GrayText)
End Sub
 

René Paschold

Erfahrenes Mitglied
Das habe ich versucht, aber das war der Fehler:

Es ist bereits eine Komponente mit dem Namen 'Button' vorhanden. Komponenten müssen eindeutige Namen haben, für die die Groß-/Kleinschreibung nicht beachtet werden muss. Eine Name darf auch nicht mit dem Namen einer Komponente in einer vererbten Klasse in Konflikt stehen.
 

Dario Linsky

Erfahrenes Mitglied
ich kenn vb.net leider gar nicht, aber ich kann mir nicht vorstellen, dass das geändert wurde. steht vielleicht in der onlinehilfe von .net was zu diesem thema?
 

René Paschold

Erfahrenes Mitglied
Und hier habe ich auch gleich die Lösung :)

Private Sub AllButtons(ByVal sender As System.Object, ByVal e As
System.EventArgs)
' Hier nun der auszuführende Code:
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Load
AddHandler Button1.Click, AddressOf AllButtons
AddHandler Button2.Click, AddressOf AllButtons
AddHandler Button3.Click, AddressOf AllButtons
AddHandler Button4.Click, AddressOf AllButtons
AddHandler Button5.Click, AddressOf AllButtons
End Sub
 

SteKo

Erfahrenes Mitglied
oben über dem code sind 2 comboboxen... in der linken das object auswählen und in der rechten den event..
total easy ;)

ansonsten melde dich einfach nochma per icq

greez
SteKo