Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Fehler bei .ValueChanged
Skilllord
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

Fehler bei .ValueChanged

beantworten | zitieren | melden

Moin,

Ich habe ein kleines Übungsprogramm geschrieben, wo ich gefragt werde, wie alt ich bin, dann muss ich mein Alter in einem DateTimePicker eingeben und auf das Alter soll dann reagiert werden.

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonBestätigen_Click(object sender, EventArgs e)
        {
            if (radioButtonAlkohol.Checked)
            {
                labelAlter.Text = "Bist du schon 16?";
                dateTimePicker1.Visible = true;

                if ((dateTimePicker1.ValueChanged) && ((DateTime.Today.AddYears(-16))) ≥ dateTimePicker1.Value)
                {                   
                    labelAusgabe.Text = "Hier hast du deinen Alk";
                }
                else
                {
                    labelAusgabe.Text = "Du bist zu jung!";
                }
            }
            else
            {
                labelAlter.Text = "Bist du schon 18?";
                dateTimePicker1.Visible = true;

                if ((dateTimePicker1.ValueChanged) && ((DateTime.Today.AddYears(-18))) ≥ dateTimePicker1.Value)
                {
                    labelAusgabe.Text = "Hier hast du deine Zigaretten";
                }
                else
                {
                    labelAusgabe.Text = "Du bist zu jung!";
                }
            }
        }
    }
}

Ich muss noch 'dateTimePicker1.ValueChanged' abfragen, weil die If-Anweisung sonst vom Standartdatum ausgeht, dass anfänglich im dateTimePicker vorhanden ist. Allerdings kriege ich bei .ValueChanged den Fehler
Zitat
Fehler 1 Das Ereignis "System.Windows.Forms.DateTimePicker.ValueChanged" kann nur links von += oder -= verwendet werden. C:\Users\Marco\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs 26 38 WindowsFormsApplication1

Ich weiß aber nicht, was mit dem "kann nur links von += oder -= verwendet werden" gemeint ist?
private Nachricht | Beiträge des Benutzers
Christoph Burgdorf
myCSharp.de - Member

Avatar #avatar-2915.jpg


Dabei seit:
Beiträge: 365
Herkunft: Hannover

beantworten | zitieren | melden

Hallo Skilllord,

da hast du etwas falsch verstanden. ValueChanged ist keine Eigenschaft, die du abfragen kannst, sondern ein Event, das du abonnieren kannst.

Deine Entwicklungsumgebung stellt Events, Eigenschaften, Variablen etc. alle unterschiedliche da, wenn du sie dir über Intellisense anzeigen lässt. Tipp doch mal datetimepicker1, mach dann den Punkt und sieh dir die Liste an, die deine Entwicklungsumgebung für dich öffnet. ValueChanged hat ein ganz anderes Symbol! Da kannst du nix abfragen ;-)

Gruß

Christoph
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Christoph Burgdorf am .
private Nachricht | Beiträge des Benutzers
D-eath
myCSharp.de - Member



Dabei seit:
Beiträge: 233
Herkunft: Ingolstadt

beantworten | zitieren | melden

Die Eigenschaften des DatePickers habe ich momentan nicht im Kopf, aber du könntest im ValueChanged einen bool setzen, der angibt, ob eine Veränderung stattgefunden hat oder das Standarddatum in einer Variable abspeichern und in deiner Abfrage mit dem aktuellen Datum vergleichen.
private Nachricht | Beiträge des Benutzers
Christoph Burgdorf
myCSharp.de - Member

Avatar #avatar-2915.jpg


Dabei seit:
Beiträge: 365
Herkunft: Hannover

beantworten | zitieren | melden

@D-eath

Man braucht hier ValueChanged gar nicht. Man muss doch bei dem ButtonClick nur den Wert des DateTimePickers abfragen und entsprechend auswerten.
private Nachricht | Beiträge des Benutzers
Skilllord
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

beantworten | zitieren | melden

Hey, danke schonmal für die Tipps!

Das Datum im DateTimePicker wird aber erst nach dem ButtonClick geändert.

Ich denke mal ich setze dann einfach noch einen zweiten Button, mit dem man das neue Datum im D.T.P. bestätigen kann.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Skilllord,

du kannst auch auf ValueChanged reagieren. Wie das geht, setzen wir als bekannt voraus. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und [FAQ] Informationen zu Events.

herbivore
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.355

beantworten | zitieren | melden

Ich denke, Skilllord hat noch ein anderes (generelleres) Problem.
Mittels


dateTimePicker1.Visible = true;
wird während des Button-Clicks der DateTimePicker erst sichtbar gemacht.

Darum kann dort auch nie ein anderer Wert als der Anfangswert stehen (da der Anwender keine Möglichkeit hat, diesen währenddessen zu ändern).

Skillord, Du mußt also dein Konzept ändern:
- Abfrage anzeigen und DateTimePicker sichtbar machen
- dann kann der Anwender den Wert im DateTimePicker ändern und danach dann Button betätigen
- im Button-Click nun auf DateTimePicker.Value reagieren

(Dies sind eigentlich die Grundlagen der eventbasierten GUI-Programmierung, aber ich wollte es noch mal explizit hervorheben.)
private Nachricht | Beiträge des Benutzers