Trotz "Enabled = False" die Events ausgeführen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    Trotz "Enabled = False" die Events ausgeführen

    Ich frage mich ist es machbar das ein zur laufzeit erstelltes Control (in diesem fall eine Textbox) das durch den AddHandler ein paar Events erhalten hat auch diese aufrufbar sind wenn das Control.Enabled = False ist?

    Folgende Evets müste ich ausführen können:

    AddHandler TextBoxSP.MouseDown, AddressOf SPBOX_Down
    AddHandler TextBoxSP.MouseMove, AddressOf SPBOX_Move
    AddHandler TextBoxSP.MouseUp, AddressOf SPBOX_Up
    AddHandler TextBoxSP.MouseDoubleClick, AddressOf SPBOX_DoubleClick

    Ich habe die Textbox "ausgeschaltet" um die Cursor änderung beim überfahren (was ich mit der eigenschaft Cursor nicht beeinflussen kann) zu unterbinden sowie das beim Click die Textbox nciht focusiert wird.

    Hat jemand eine idee wie ich das Problem lösen kann?
    Bin da auf ein Problem gestoßen ich kann ReadOnly nicht beeinflussen
    da ich die TextBox zur laufzeit erstelle.

    Also auf jedenfall kann ich es nicht mit der Methode machen wie ich bis
    jetzt mit der TextBox gearbeitet habe.

    Me.Controls("TextBoxSP").ReadOnly = True
    (Ist kein Member von System.Windows.Forms.Control)
    try ist nur falls das casten fehlschlägt zur laufzeit

    VB.NET-Quellcode

    1. try
    2. directcast(Me.Controls("TextBoxSP"),textbox).readonly =true
    3. catch bla

    oder eben trycast

    bzw ...wieso setzt readonly nicht gleich beim erstellen der tb auf false?
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mono“ ()

    Weil die eigenschaft Dynamisch sein muss (Der Benutzer muss hin und her schalten können)
    ________________________
    Danke für die extra Erklärung

    Edit: Aber leider tut sich nix obwohl es aufgerufen wird
    Doch jetzt gehts war mein Fehler!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eistee“ ()

    ich bin verwirrt...

    wenn du die textbox dynamisch erstellst, kannst du doch komplett auf sie zugreifen.

    und wenn's funktionsübergreifend sein soll, deklarier sie außerhalb einer funktion.

    versteh ich das problem nicht oder macht ihr es einfach nur kompliziert?
    Das Problem war das ich auf die zur laufzeit erstellten Textbox und dessen Eigenschaft ".readonly" so nicht verändern könnte:

    VB.NET-Quellcode

    1. Me.Controls("TextBoxSP"),textbox.readonly = true


    Mit der "dynamik" meinte ich das der Benutzer diese Eigenschaft selbst bestimmen kann also ob die Textbox readonly true oder false ist.

    Dies geht mit dem Code von Mono Directcast

    VB.NET-Quellcode

    1. directcast(Me.Controls("TextBoxSP"),textbox).readonly =true

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eistee“ ()

    LordKnobi meint,

    wenn du eine TB erstellst in etwa so:

    VB.NET-Quellcode

    1. Public Class Form0815
    2. Private TB as Textbox
    3. Private Sub Form_load..
    4. TB = New Textbox
    5. Tb.Name = "Wtf"
    6. Tb.Text = "Sowas"
    7. Tb.readonly = False
    8. me.controls.add(tb)
    9. End sub
    10. 'jetzt kannst du zB per button click
    11. Private Sub ButtonMachsRead_Only(..)
    12. Tb.readonly = True
    13. End sub
    14. End Class


    gurss
    Das ist meine Signatur und sie wird wunderbar sein!