Toon posts:

[C#] waarom werkt deze code niet

Pagina: 1
Acties:
  • 366 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo;

Wellicht is het te laat om goed na te denken maar ik snap niet waarom deze code niet werkt.
Ik heb een textbox met MultiLine op true. Daarnaast heb ik de volgende extension:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
        public static bool IsNumber(this char st)
        {
            return st.Equals('1') ||
                st.Equals('2') ||
                st.Equals('3') ||
                st.Equals('4') ||
                st.Equals('5') ||
                st.Equals('6') ||
                st.Equals('7') ||
                st.Equals('8') ||
                st.Equals('9');
        }


Dit return true als de char een getal is en false als dat niet zo is.
Het volgende event heb ik:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            foreach (String st in this.textBox1.Lines)
                if (st.Length != 0)
                {

                    if (!st[0].IsNumber())
                    {
                        this.label1.Text = "error";
                        tip.Show("Wrong Format", this.textBox1);
                        break;
                    }
                    else
                    {
                        this.label1.Text = "";
                        tip.Hide(this.textBox1);
                    }

                }
        }


Wat mijn verwacht is dat bij elke textchanged event controleer hij steeds het eerste teken van de regel. Als deze geen getal is laat hij een ballon zien (tip = ToolTip). Mocht dat het geval zijn zal hij (break;) de rest van de regels niet controleren. Wanneer er st wel een nummer is zal hij tip verbergen.

Alleen wat er nu gebeurt is dat hij nooit die tooltip laat zien. Als ik die else weg haal toon hij wel de tooltip alleen gaat het niet weg. De tekst op de label toont wel aan dat de if methode juist werkt. Er staat error op als het begin teken niet een getal is.

Weet iemand een antwoord?? Alvast bedankt.

Gr,
Rick

P.s. de code met het probleem is te downloaden op http://www.chroomsoft.nl/vreemd.rar (VS 2008)

[ Voor 0% gewijzigd door een moderator op 23-12-2008 01:19 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post, gebruik dan code tags; dat maakt het geheel een stuk leesbaarder. Ik heb het even voor je aangepast.

Verder: ik vind je wel erg omslachtig controleren of iets een cijfer is of niet :X En heb je al eens gedebugged? (Debuggen: Hoe doe ik dat?) Dan moet je namelijk simpel kunnen vinden waar je probleem zit.

[ Voor 27% gewijzigd door RobIII op 23-12-2008 01:20 ]

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:
  • 0 Henk 'm!

  • QuaQu
  • Registratie: Oktober 2002
  • Laatst online: 18-08-2021
RobIII schreef op dinsdag 23 december 2008 @ 01:18:
Verder: ik vind je wel erg omslachtig controleren of iets een cijfer is of niet :X
Idd, ook zou ik de range voor getallen uitbreiden van 1-9 naar 0-9!

"Ik heb een boel geld uitgegeven aan drank, vrouwen en snelle auto's. De rest heb ik over de balk gesmeten." - George Best


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
QuaQu schreef op dinsdag 23 december 2008 @ 01:27:
[...]

Idd, ook zou ik de range voor getallen uitbreiden van 1-9 naar 0-9!
Of de functienaam aanpassen, mocht de 0 inderdaad een 'ongeldig teken' zijn ;)

Tip: Overigens zit je probleem niet zo zeer in je code danwel in de properties van de tip ;) Verwijder dat ding eens, voeg een nieuwe toe en doe niets anders dan de naam wijzigen van "toolTip1" naar tip en probeer je code dan nog eens. Daarna stapje voor stapje andere properties gaan wijzigen en je zult al snel zien dat daar ergens ( :P ) het probleem in zit ;)

[ Voor 42% gewijzigd door RobIII op 23-12-2008 01:32 ]

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:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
Je geeft geen duration mee aan je tooltip, default is de duration 1 ms dus hij is gelijk al weer weg.

Verander het naar tip.Show("Wrong Format",this.textBox1, 10000); en je zal hem wel zien (voor 10 seconden).

[ Voor 4% gewijzigd door cixx op 23-12-2008 01:33 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jij verklapt het meteen :'( Da's niet leuk :+

Daarbij klopt je aanname ook niet; als ik regel 10:
C#:
1
tip.Show("Wrong Format", this.textBox1); 


vervang door
C#:
1
tip.Show("Wrong Format", this.textBox1, this.textBox1.Location);
dan werkt het namelijk ook ;)

Anyhow, dit is gewoon even spelen met de tooltip control, properties en manieren van aanroepen/showen van dat ding en prima met wat simpel debugwerk en documentatie lezen op te lossen.

[ Voor 100% gewijzigd door RobIII op 23-12-2008 01:42 ]

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:
  • 0 Henk 'm!

  • cixx
  • Registratie: Augustus 2005
  • Laatst online: 28-09-2024
RobIII schreef op dinsdag 23 december 2008 @ 01:34:
[...]

Jij verklapt het meteen :'( Da's niet leuk :+

Daarbij klopt je aanname ook niet; als ik regel 10:
C#:
1
tip.Show("Wrong Format", this.textBox1); 


vervang door
C#:
1
tip.Show("Wrong Format", this.textBox1, this.textBox1.Location);
dan werkt het namelijk ook ;)

Anyhow, dit is gewoon even spelen met de tooltip control, properties en manieren van aanroepen/showen van dat ding en prima met wat simpel debugwerk op te lossen.
Haha ja zolang je een int meegeeft werkt hij gewoon ;)

Trouwens, die IsNumber kan ook veel beter/makkelijker. Een char heeft namelijk al een static methode die controleerd of het een getal is.
En je raad nooit hoe die methode heet... ;)

edit: typo

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En dan wil ik, nog even verwijzend naar onze Quickstart en de toch wel weinigzeggende topictitel, hier verder maar een eind aan breien. Dit is gewoon een kwestie van even spelen/documentatie lezen zoals ik al aangaf en verder lijkt me met alle bovenstaande info de TS er prima uit te moeten komen.
cixx schreef op dinsdag 23 december 2008 @ 01:42:
En je raad nooit hoe die methode heet... ;)
No shit sherlock :o :P

[ Voor 25% gewijzigd door RobIII op 23-12-2008 01:54 ]

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

Pagina: 1

Dit topic is gesloten.