vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
Wer kann meinen Code verbessern/optimieren??? 
Autor: Cpt.Bacardi
Datum: 22.08.04 20:53

Hallo,

ich habe einen Code geschrieben,
welcher einen Sub aufruft der den selben Namen hat aus dem er aufgerufen wurde
funktioniert allerdings nur bei Textboxen. blos mit der endung des Subnamens _n!
Dieser Sub wird allerdings erst nach 0,8 Sekunden verzögerung aufgerufen, und auch
nur dann wenn der Text sich in dieser Zeit nicht verändert hat!
Also wie folgt habe den Sub Textbox1_TextChanged Also wenn in dem Feld text
eingegeben wird, wird der Sub Textbox1_n aufgerufen, allerdings erst nachdem im
Textfeld 0,8 Sekunden mehr keine Änderung stattgefunden hat. Habe absichtlich eine
Parameter übergeben, da dass dann für mich eine Menge schreibarbeit bedeutet, da
ich diesen Code ewig oft verwenden werde.

Hier der Code:
    Public Shared waitermethodname As String
    Public Shared waitermethodstring As String
 
    Private Sub Wait()
        Dim stack_t As New System.Diagnostics.StackTrace()
        Dim stack_f As System.Diagnostics.StackFrame = stack_t.GetFrame(1)
        Dim mb As System.Reflection.MethodBase = stack_f.GetMethod
        waitermethodname = mb.Name.ToString
        waitermethodstring = sctrl(Me, waitermethodname.Substring(0, _
          waitermethodname.Length - 12)).Text
        Dim thrd As New Threading.Thread(AddressOf Sleep)
        thrd.Start()
    End Sub
 
    Private Sub Sleep()
        Dim waiterstr As String = waitermethodstring
        Dim waiter As String = waitermethodname.Substring(0, _
          waitermethodname.Length - 12) & "_n"
        Threading.Thread.Sleep(800)
        If waiterstr = waitermethodstring Then
            Microsoft.VisualBasic.CallByName(Me, waiter, CallType.Get)
        End If
 
    End Sub
 
    Private Function sctrl(ByVal f As Form, ByVal name As String) As Control
        Dim t As Type = f.GetType()
        Dim flds() As System.Reflection.FieldInfo = t.GetFields( _
          System.Reflection.BindingFlags.Instance Or _
          System.Reflection.BindingFlags.Public Or _
          System.Reflection.BindingFlags.NonPublic)
        Dim fld As System.Reflection.FieldInfo
        For Each fld In flds
            If fld.Name = name Or fld.Name = "_" + name Then
                Return fld.GetValue(f)
            End If
        Next
    End Function
 
 
 
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles TextBox1.TextChanged
        Wait()
    End Sub
 
    Public Shared Sub Textbox1_n()
        MessageBox.Show("ok")
    End Sub
Bin für jeden Verbesserungs- Optimierungsvorschlag offen.

Vielen Dank
Cpt.Bacardi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wer kann meinen Code verbessern/optimieren???704Cpt.Bacardi22.08.04 20:53
Warum der Code optimiert werden soll496Cpt.Bacardi22.08.04 21:06

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-2024 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