Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699

sub bedingt aufrufen
Verfasst am: 11.05.2008, 16:44

ich will, dass wenn sub A sub B aufruft nichts passiert, aber wenn sub C sub B aufruft das passiert das passieren soll.

also ich hab ne textbox in der ich ab und zu was ersetze, und ich will, dass das textbox_change event NICHT aufgerufen wird wenn der text intern verändet wird zB durch replace. es soll nur aufgerufen werden wenn der user was eingibt
_________________
 
Hamtaro
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.04.2008
Beiträge: 29


Verfasst am: 11.05.2008, 17:02

Ohne subclassing wohl nicht möglich und meiner Meinung nach auch unsinnig.
Warum willst du das denn überprüfen, mit einer globalen Variable ist das bestimmt einfacher.
Außerdem meinst du eine Klasse und keine Sub, oder?
 
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374


Verfasst am: 11.05.2008, 17:09

Gib doch Sub B einen Parameter, der angibt von wo er aufgerufen wurde. Und wenn der Parameter zugelassen ist, wird dein Code ausgeführt.

Beispiel:
Visual Basic: [code]
Private Sub Button1_Click(...)
'ist zB jetzt Sub A
B("Button1")
End Sub

Sub C()
B("Sub C")
End Sub

Sub B(ByVal quelle As String)
'...
If quelle = "Button1" Then
ElseIf quelle = "Sub C" Then

End If
End Sub[/code]
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 11.05.2008, 17:23

Ne, ich hab ne Sub die die Textbox um ein Zeichen kürtzt (wie die Rücktaste), und dabei wird ja die Sub Textbox_Changed aufgerufen, was ich nicht will. Ich ruf die Sub ja nicht direkt auf (mit Call oder so).
 
The-God-of-all
Tutorial Leser
Tutorial Leser

Anmeldedatum: 01.05.2008
Beiträge: 35


Verfasst am: 11.05.2008, 17:27

Dann deklarier doch eine Globale Variable und setze sie bevor du das Zeichen löschst auf True und danach wieder auf False. In der Sub Textbox_Changed machst du dann eine If Abfrage ob die Variable True ist oder nicht.
 
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374


Verfasst am: 11.05.2008, 17:28

Ja, dann mach das ganze doch wie hamataro gesagt hat mit ner globalen Variable und frage in der Textbox_changed ob die Variable gesetzt worden ist

//war einer schneller Very Happy
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 11.05.2008, 17:34

janee wo soll ich die Variable wieder auf False setzen?
Die Change Sub wird erst aufgerufen wenn die Andere Sub fertig ist.
 
Marduk
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 374


Verfasst am: 11.05.2008, 17:45

Innerhalb des Textbox_changed Sub änderst du die Variable wieder

Hiermal ein Beispiel

Visual Basic: [code]Public Class Form1
Dim var As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
var = True
TextBox1.Text = TextBox1.Text.Replace("e", "")
MsgBox("test")
Dim i, s As Integer
i = 5
s = 5
i = i + s
i = i / s


End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If var = True Then
MsgBox("per Code")
var = False
Else
MsgBox("per Hand")
End If

End Sub
End Class
[/code]

Debugge dein Projekt mal durch, Textbox_changed wird bei mir aufgerufen direkt wenn ich die Textbox geändert habe, also hier
Visual Basic: [code] TextBox1.Text = TextBox1.Text.Replace("e", "")[/code]
Und zu der Zeit ist ja schon die Variable gesetzt, dass die Textbox per Code geändert worden ist. Im _changed Sub änderst du die Variable wieder auf true, damit sie Standardmäßig "Per Hand" ausgibt
_________________


 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 13.05.2008, 07:12


Btw. kannst du statt dem Change Event ja auch KeyPress, KeyDown oder KeyUp nutzen.

Selbes Problem gibt es nämlich auch bei Checkboxen und ich glaube bei Optionbuttens.
Da wird wenn ich mich nicht täusche das Click Event ausgeführt wenn man die Value Eigenschaft per Code ändert.
Da nimmt man dann halt MouseDown etc.
Dann funktioniert das einwandfrei.
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: aufrufen, sub, event

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Sub mit auswahlmöglichkeiten 472 21.09.2009, 16:42
Keine neuen Beiträge Sub oder Funktion nicht gefunden (createobject) 354 29.06.2008, 12:41
Keine neuen Beiträge Komponenten registrieren mit Sub Main 1149 21.05.2008, 09:28
Keine neuen Beiträge [Text] Komponenten registrieren mit Sub Main 1635 26.04.2008, 12:45
Keine neuen Beiträge Melt sub / anti sandboxie usw 1144 14.04.2008, 17:39
 



[ Time: 0.3251s ][ Queries: 113 (0.0261s) ][ GZIP on - Debug on ]