Autor Beitrag
ElJarno
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.03.09 17:04 
jetzt hätt ich noch ne andere frage und zwar wie ich es machen könnte dass beim klick auf das bild es jedesmal zwischen zwei bilder hin und her schaltet, sprich so wie ein lichtschalter die stellungen ein und aus. hatte jetzt schon mal sowas hier geschrieben aber irgendwie funktioniert der button pB_eingang_b nur richtig der andere wehcselt zweimal und dann nicht mehr. liegt das irgendwie an c#

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
    public partial class frm_AND_Gatter : Form
    {
        private bool button_a;
        private bool button_b;

        private Image image_a_off = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\blitz blau.png");
        private Image image_b_off = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\blitz blau.png");
        private Image image_y_off = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\stecker blau.png");
        private Image image_a_on = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\blitz rot.png");
        private Image image_b_on = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\blitz rot.png");
        private Image image_y_on = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\birne rot.png");

        public frm_AND_Gatter()
        {
            InitializeComponent();

            pB_eingang_a.Image = image_a_off;
            pB_eingang_b.Image = image_b_off;
            pB_ausgang_y.Image = image_y_off;
        }

        private void pB_eingang_a_Click(object sender, EventArgs e)
        {
            if (pB_eingang_a.Image == image_a_off)
            {
                pB_eingang_a.Image = image_a_on;
            }
            else if (pB_eingang_a.Image == image_a_on)
            {
                pB_eingang_a.Image = image_b_off;
            }
        }

        private void pB_eingang_b_Click(object sender, EventArgs e)
        {
            if (pB_eingang_b.Image == image_b_off)
            {
                pB_eingang_b.Image = image_b_on;
            }
            else if (pB_eingang_a.Image == image_b_on)
            {
                pB_eingang_b.Image = image_b_off;
            }
        }

    }


vielen dank

jan
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 05.03.09 17:17 
user profile iconElJarno hat folgendes geschrieben Zum zitierten Posting springen:
liegt das irgendwie an c#
Sorry, aber der Fehler liegt leider in den meisten Fällen immer noch beim Programmierer ;) .
Schau dir die Methode und die darin verwendeten Bild-Bezeichner noch einmal genau an, dann muss dir dein Fehler ins Auge springen.

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 05.03.09 17:18 
So ist das mit dem Programmieren mit Copy&Paste. Hier hast Du Dich vermutlich vertan:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void pB_eingang_b_Click(...

   // falsch:  
   else if (pB_eingang_a.Image == image_b_on)
   // richtig:  
   else if (pB_eingang_b.Image == image_b_on)


Gruß Jürgen

PS. Sebastian war schneller. Es ist natürlich auch ein Problem von "Betriebsblindheit", dass man solche Fehler nicht unbedingt erkennt.

PS 2. Den letzten Hinweis des zweiten Sebastian mit der speziellen Variablen würde ich auch bevorzugen.


Zuletzt bearbeitet von JüTho am Do 05.03.09 17:21, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.03.09 17:19 
Ok, den Fehler hat user profile iconKha ja bereits genannt. Den Rest kann ich ja lassen:

Das kommt von Copy&Paste und ungünstigen (unübersichtlichen) Bezeichnern. ;-)
Nimm am Besten keine Unterstriche, das verwirrt nur (ich weiß nicht wie das vom Styleguide her in C# damit aussieht).

Ich würde zudem eher den Zustand selbst in einer Variable speichern statt ihn an Hand des aktuellen Bildes festzustellen. ;-)
ElJarno Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.03.09 17:47 
Also das hier war nur en tippfehelr beim erstellen des threads

Zitat:
So ist das mit dem Programmieren mit Copy&Paste. Hier hast Du Dich vermutlich vertan:
ausblenden anzeigen C#-Quelltext
ausgeblendet markieren

private void pB_eingang_b_Click(...

// falsch:
else if (pB_eingang_a.Image == image_b_on)
// richtig:
else if (pB_eingang_b.Image == image_b_on)



Gruß Jürgen


aber der tipp die abfrage anhand von bool variablen zu machen hat geholfen. hat die perfomance jetzt auch verbessert. wie gesagt der erset button hat sich ja 2 mal verändert und dann nicht mehr

Zitat:
Ich würde zudem eher den Zustand selbst in einer Variable speichern statt ihn an Hand des aktuellen Bildes festzustellen. ;-)


danke für die schnellen antworten