C# mijn notification.balloontip blijft maar herhalen.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik maak een applicatie waarbij je notificatie krijgt als je iets fout hebt geraden.
Dus ik wil aan de hand van een windows notificatie de gebruiker laten weten hoeveel kansen die nog heeft om het antwoord goed te raden. Maar de windows notificatie blijft zich herhalen. Ik heb al geprobeerd om een break; erachter te zetten maar dat kan niet. Kan iemand me verder helpen?

Dit is mijn code
code:
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
        private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            if (status >= 1)
            {
                //geeft notificatie nog 9 kansen
                notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 9 kansen";
                notifyIcon1.Icon = SystemIcons.Exclamation;
                notifyIcon1.ShowBalloonTip(1000);
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 85, 190, 210, 190);
            }
            if (status >= 2)
            {
                //geeft notificatie nog 8 kansen
                notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 8 kansen";
                notifyIcon1.Icon = SystemIcons.Exclamation;
                notifyIcon1.ShowBalloonTip(1000);
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 190, 148, 50);
            }
            if (status >= 3)
            {
                //geeft notificatie nog 7 kansen
                notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 7 kansen";
                notifyIcon1.Icon = SystemIcons.Exclamation;
                notifyIcon1.ShowBalloonTip(1000);
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 50, 198, 50);
            }
}

Alle reacties


Acties:
  • 0 Henk 'm!

Verwijderd

Reset je de status wel?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Verwijderd Hoe zal ik dat moeten doen?

Acties:
  • 0 Henk 'm!

  • RedFox
  • Registratie: November 2001
  • Laatst online: 17:06

RedFox

Heb je een OV ofzo?

Als de status 3 is worden nu alle 3 de if-statements geraakt. Is dat de bedoeling? Anders moet je eens kijken naar if else ipv if.

You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else.


Acties:
  • 0 Henk 'm!

  • MrMonkE
  • Registratie: December 2009
  • Laatst online: 26-08 00:10

MrMonkE

★ EXTRA ★

Leer hoe switch werkt.

https://docs.microsoft.co...reference/keywords/switch

int caseSwitch = 1;

switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}

★ What does that mean? ★


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@MrMonkE Dat werkt niet wat er dan gebeurt is dat me programma bij elke fout de eerste notifcation blijft herhalen. Dit is de code die ik aan de hand van je uitleg heb geprobeerd:
code:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
        private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            int caseSwitch = 1;
            switch (caseSwitch)
            {
                //status 1 van het galgje poppetje
                case 1:
                    //geeft notificatie nog 9 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 9 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 85, 190, 210, 190);
                    break;
                //status 2 van het galgje poppetje
                case 2:
                    //geeft notificatie nog 8 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 8 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 190, 148, 50);
                    break;
                //status 3 van het galgje poppetje
                case 3:
                    //geeft notificatie nog 7 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 7 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 50, 198, 50);
                    break;
                //status 4 van het galgje poppetje
                case 4:
                    //geeft notificatie nog 6 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 6 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 50, 198, 70);
                    break;
                //status 5 van het galgje poppetje
                case 5:
                    //geeft notificatie nog 5 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 5 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawEllipse(new Pen(Color.Black, 2), new Rectangle(188, 70, 20, 20));
                    break;
                //status 6 van het galgje poppetje
                case 6:
                    //geeft notificatie nog 4 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 4 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 90, 198, 130);
                    break;
                //status 7 van het galgje poppetje
                case 7:
                    //geeft notificatie nog 3 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 3 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 95, 183, 115);
                    break;
                //status 8 van het galgje poppetje
                case 8:
                    //geeft notificatie nog 2 kansen
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 2 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 95, 213, 115);
                    break;
                //status 9 van het galgje poppetje
                case 9:
                    //geeft notificatie nog 1 kans
                    notifyIcon1.BalloonTipText = "1 kans minder, je hebt nog 5 kansen";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 130, 183, 170);
                    break;
                //status 10 van het galgje poppetje
                case 10:
                    //geeft notificatie geen kansen meer
                    notifyIcon1.BalloonTipText = "je hebt geen kansen meer";
                    notifyIcon1.Icon = SystemIcons.Exclamation;
                    notifyIcon1.ShowBalloonTip(1000);
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), 198, 130, 213, 170);
                    break;

            }
        }

[ Voor 95% gewijzigd door Verwijderd op 13-04-2019 11:27 ]


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:34
Waarom doe je dit in het paint event?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@sig69 omdat ik een galgje aan het maken ben en elke x als je dan een foutje maakt word de galg langer en aan de hand van notificaties wil ik laten zien hoeveel kansen je nog hebt om het te kunnen raden.

Acties:
  • 0 Henk 'm!

  • MrMonkE
  • Registratie: December 2009
  • Laatst online: 26-08 00:10

MrMonkE

★ EXTRA ★

Okay ik zie sowieso dat je veel code hebt die dubbel is het klan allemaal veel compacter.
Mijn handen jeuken :)

★ What does that mean? ★


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@MrMonkE zal je daarvan misschien uitleg of een voorbeeldje kunnen maken over hoe ik het veel compacter kan aanpakken?

Acties:
  • 0 Henk 'm!

  • MrMonkE
  • Registratie: December 2009
  • Laatst online: 26-08 00:10

MrMonkE

★ EXTRA ★

Je zet bovenin de switch op 1
Dat moet niet.. want dan is het altijd 1

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
int caseSwitch = 1;
switch (caseSwitch)
{
//status 1 van het galgje poppetje

★ What does that mean? ★


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
waarin zal ik het dan moeten gaan veranderen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zaterdag 13 april 2019 @ 11:33:
waarin zal ik het dan moeten gaan veranderen?
Denk je zelf ook even een beetje na voordat je vragen stelt?

Jij bent aan het programmeren. Wat wil je dat die status doet? Waar komt die vandaan? Waar wordt die bijgewerkt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • MrMonkE
  • Registratie: December 2009
  • Laatst online: 26-08 00:10

MrMonkE

★ EXTRA ★

Ik heb niet echt tijd om erin te duiken.
Maar als je dingen ziet (9x vrijwel dezelfde boodschap) dan maak je daar een functie voor en met parameters de voor dingen die afwijken per notificatie.

Dan zou je met een enkele else-if klaar kunnen zijn denk ik.
Ook zou ik sowieso == gebruiken in de meeste gevallen uit je voorbeeld.

Ik vermoed dat status altijd 1 is.
Even kijken met debugger kijken of debug print.

[ Voor 37% gewijzigd door MrMonkE op 13-04-2019 11:39 ]

★ What does that mean? ★


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:34
Verwijderd schreef op zaterdag 13 april 2019 @ 11:28:
@sig69 omdat ik een galgje aan het maken ben en elke x als je dan een foutje maakt word de galg langer en aan de hand van notificaties wil ik laten zien hoeveel kansen je nog hebt om het te kunnen raden.
Dat is geen reden om dit in het paint event te doen. Heb je wel enig idee wat het paint event doet?
Niet om je compleet af te branden, maar je hebt geen idee wat je aan het doen bent. Ik vind het altijd leuk als mensen willen leren programmeren, maar begin dan bij de basis.
Als een if/else of switch al onbekend is, tsja...

[ Voor 26% gewijzigd door sig69 op 13-04-2019 11:40 ]

Roomba E5 te koop


Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je nou eens gewoon begint met debuggen (Debuggen: Hoe doe ik dat?). Je programmeert in C# dus ik neem aan Visual Studio. Dan heb je een van 's werelds beste debuggers tot je beschikking. Gebruik die dan. En als je niet weet hoe je dat moet doen, leer dat dan z.s.m.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • thegod
  • Registratie: Januari 2012
  • Laatst online: 11-09 16:02
Verwijderd schreef op zaterdag 13 april 2019 @ 11:30:
@MrMonkE zal je daarvan misschien uitleg of een voorbeeldje kunnen maken over hoe ik het veel compacter kan aanpakken?
Bijvoorbeeld:

C#:
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
        private string BalloonMessage(int try)
        {
             return $"1 kans minder, je hebt nog {10-try} kans{(try == 9 ? "" : "en")}"
        }

        private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            notifyIcon1.BalloonTipText = BalloonMessage(status);
            notifyIcon1.Icon = SystemIcons.Exclamation;
            notifyIcon1.ShowBalloonTip(1000);

            if (status >= 1) // verander dit btw door status ==1
            {
                //geeft notificatie nog 9 kansen
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 85, 190, 210, 190);
            }
            if (status >= 2) // verander dit btw door status ==2
            {
                //geeft notificatie nog 8 kansen
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 190, 148, 50);
            }
            if (status >= 3) // verander dit btw door status ==3
            {
                //geeft notificatie nog 7 kansen
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 148, 50, 198, 50);
            }
}


dit scheelt toch 9x3 regels code, en vervangt t met 5-6 regels.
@sig69 omdat ik een galgje aan het maken ben en elke x als je dan een foutje maakt word de galg langer en aan de hand van notificaties wil ik laten zien hoeveel kansen je nog hebt om het te kunnen raden.
Deze functie gaat trouwens af als er iets wordt getekend op 'Form1_Paint', en deze functie lijkt ook iets te tekenen op 'Form1_Paint' -> dus gaat deze functie weer af->dus wordt er weer wat getekend->dus gaat deze functie af-> kan een infinite loop zijn. Om dit te voorkomen is het waarschijnlijk handig deze functie ergens anders te plaatsen, niet in de Form1 paint functie.Zoiets als:

code:
1
2
3
4
5
if(userGivesWrongAnswer)
{
     status = status + 1;
     DrawStatus(status);
}

Waarbij de DrawStatus() functie een 'normale niet trigger' functie is, en in Form1 zou moeten zitten.
in die functie kan je het paint object vinden met zoiets als:

'this.Paint.Graphics.DrawLine(new Pen(Color.Black, 2), 85, 190, 210, 190);'

dan heb je in ieder geval geen infitite loop meer.

[ Voor 23% gewijzigd door thegod op 14-04-2019 14:43 ]

Pagina: 1