DateTimePicker für die ganze Anwendung

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von tomduess.

    DateTimePicker für die ganze Anwendung

    Guten Tag,
    in meiner Windows Forms-Anwendung nutze ich für die Eingabe in MaskedTextbox-Datumsfelder das DateTimePicker-Control, welches mir mit der Ereigniseigenschaft ValueChanged das Datum in ein Textfeld zurückschreibt. Nun habe ich mehrere Forms mit vielen Datums-Textfeldern. Muss ich in jedem Formular ein solches DTP-Control setzen oder ist es möglich, ein zentrales anzusprechen?
    Danke für Eure Antworten.
    Thomas
    Willkommen im Forum. :thumbup:
    Brauchst Du in jeder Form eine eigene Instanz
    oder
    genügt Dir eine Instanz App-weit?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du kannst dein Datum ein einer Public Variablen abspeichern und diese dann auf allen Formularen in dern Textboxen anzeigen.

    in dem "activated" Element der Formen würden ich dann einstellen das der Text der Textboxen akualisiert wird.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    ein einer Public Variablen abspeichern
    Wenn, dann in einer Get- Private Set-Property.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    warum nicht mit:

    VB.NET-Quellcode

    1. '... frmHauptform
    2. Public datum As Date = Date.Now
    3. '... Unterform
    4. Private Sub frmSchnipsel_Activated(sender As Object, e As EventArgs) Handles MyBase.Activated
    5. Button2.Text = FrmHauptform.datum.ToString
    6. End Sub


    Was ist der Vorteil von einer Get- Private Set-Property?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    Was ist der Vorteil von einer Get- Private Set-Property?
    Der gute Stil.

    VB.NET-Quellcode

    1. FrmHauptform.datum = Nothing
    ginge dann nicht.
    Properties werden anders behandelt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mist!
    Hab ich mir fast gedacht :)

    Wie sähe das dann in gut aus?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    in gut
    So:

    VB.NET-Quellcode

    1. Private _datum As DateTime = DateTime.Now
    2. Public ReadOnly Property datum As Date
    3. Get
    4. Return _datum
    5. End Get
    6. End Property
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    tomduess schrieb:

    Mir genügt eine Instanz
    Dann kannst Du auch eine Shared-Property machen:

    VB.NET-Quellcode

    1. Private Shared _datum As DateTime = DateTime.Now
    2. Public Shared ReadOnly Property datum As Date
    3. Get
    4. Return _datum
    5. End Get
    6. End Property
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Willkommen im Forum. :thumbup:
    Brauchst Du in jeder Form eine eigene Instanz
    oder
    genügt Dir eine Instanz App-weit?

    Mir geht es nicht darum, ein Datumsfeld mit einer Variablen zu füllen, sondern die Eingabe in ein Textfeld mithilfe eines DateTimePickers zu vereinfachen, ohne dass ich aber dieses DateTimePickers-Control in jedes Formular mitsamt dem Code einbauen muss, sondern dieses zentral steuern möchte.
    @tomduess:
    1. ist es nicht erforderlich, dass Du jedesmal einen ganzen Post zitierst.
    2. bekommst Du hier (zumindest von mir) keine fertigen C&P-Lösungen, sondern Denkanstöße.
    3. Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim txt = datum.ToString
    2. txt = datum.ToShortDateString
    3. txt = datum.ToLongDateString
    4. txt = datum.ToShortTimeString
    5. txt = datum.ToLongTimeString
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @tomduess: Erwartest Du hier fertige C&P-Lösungen?

    RodFromGermany schrieb:

    bekommst Du hier (zumindest von mir) keine fertigen C&P-Lösungen, sondern Denkanstöße.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dir ist schon bewusst das du mit dem ändern des Values im DateTimePickers auch dieses Value auf eine Variable schreiben kannst und dann die von Rod & mir beschriebenen Methoden nutzen könntest um dein Vorhaben zu realisieren?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @tomduess
    Ja kannst du
    Angenommen der DateTimePicker befindet sich in Form1 und du möchtest auf den DateTimePicker mit einem Button in Form2 zugreifen. Dann musst du statt DateTimePicker1 (so wie es wäre wenn der DateTimePicker sich in der selben Form befindet) eben Form1.DateTimePicker1 eingeben. Achtung das Form1 ist nicht der Name der Form, sondern der Klasse!

    Code des Buttons in Form2, wenn du den Wert des DateTimePickers in Form1 verändern willst: (auf das heutige Datum)

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Form1.DateTimePicker1.Value = New Date(2013, 7, 12)
    3. End Sub


    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom

    Switcherlapp97 schrieb:

    Form1.DateTimePicker1.Value = New Date(2013, 7, 12)
    Gugst Du hier.
    @tomduess: Du sollst nicht quer Beet auf das Control zugreifen, sondern auf die Property, die den Wert hält und der bei jeder Änderung des Picker-Wertes aktualisiert wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi
    für mich hört es sich eher so an, als wäre die Funktionalität in mehreren Controls immer dieselbe, auch über Formen hinweg und du möchtest den Code in ein eigenes Benutzersteuerelement auslagern, um die Coderedundanz zu minimieren.
    Lege dazu einfach eine neue Klasse an, die von Control erbt (du kannst auch die Benutzersteuerelement-Vorlage oder ähnliche verwenden) oder besser noch von MaskedTextBox o.ä. Anschließend schreibst du dort den Code hinein, der die Funktionalität des Steuerelements bereitstellt. An dieser Stelle kannst du dann eben ein DTP-Control pro Thread verwenden, Threads könnte man ggf. per ManagedThreadId in System.Threading.Thread.CurrentThread unterscheiden. Ich würde aber ehrlich gesagt einfach mehrere DTP-Controls verwenden.

    Gruß
    ~blaze~