ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
1
2
3
4
5
6
7
8
9
| private void menuItem_Click(object sender, System.EventArgs e) { MenuItem menuItem = sender as MenuItem; if(menuItem != null) { // Doe er iets mee. } } |
Aan der hand van je sender kun je het item achterhalen.
riezebosch, niet snel posten als ik een voorbeeldje tik!
[ Voor 13% gewijzigd door pjvandesande op 30-08-2005 10:07 ]
ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800
Show is even wat code dan!TrasherXL schreef op dinsdag 30 augustus 2005 @ 10:06:
dat klopt ja, hier heb die proberen te typecasten (want het is een def object) naar een menitem, maar dit werkt niet, dwz de .text optie bv blijft dan leeg
MenuItem menuItem = sender as MenuItem; en dan menuItem.Text.....
en
((MenuItem)sender).Text blijft empty...
vage shit
ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800
Het prencipe is hetzelfde. Alleen gooit (MenuItem)sender) misschien een InvalidCastException. In bijde gevallen word gecast, alleen bij de AS operator heb je geen exception maar een null-waarde.TrasherXL schreef op dinsdag 30 augustus 2005 @ 10:11:
questa, echt raar maar die regel van jou werkt wel:
C#:
1 2 MenuItem menuItem = sender as MenuItem; // en dan menuItem.Text.....
en
C#:
1 2 ((MenuItem)sender).Text blijft empty... vage shit
Jawel, want anders zou hij niet eens kunnen casten.dotcode schreef op dinsdag 30 augustus 2005 @ 10:16:
Dan is het object blijkbaar niet van het type waar je naar probeert te casten. Kijk eens in de debugger wat het dan wel is?
MenuItem temp = (MenuItem)sender;
temp.Text geeft dan ook de juiste text.
raar normaal hoef ik nooit eerst een referentie te maken, ach ja het werkt bedankt hoor
ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800
Hippy, dat kun je in je eigen code ook wel zien.dotcode schreef op dinsdag 30 augustus 2005 @ 10:32:
Cool, ik ga effe kijken in de ms-il wat er mis gaat.
Anyway, een cast of de AS operator geven hetzelfde resultaat als het goed is. Daar kan het niet aan liggen.
[ Voor 7% gewijzigd door pjvandesande op 30-08-2005 10:44 ]
Niet helemaal. De As operator returnt als het goed is null als hij niet kan casten en gewoon Casten levert een InvalidCastException op.questa schreef op dinsdag 30 augustus 2005 @ 10:43:
[...]
Hippy, dat kun je in je eigen code ook wel zien.![]()
Anyway, een cast of de AS operator geven hetzelfde resultaat als het goed is. Daar kan het niet aan liggen.
Maar al het wel van het type is waar je naar wilt casten zou het idd hetzelfde resultaat op moeten leveren.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
ASUS Commando | Core2Duo E6600 @ 3Ghz air-cooled | Geforce 8800GTX | Raid-0 | 4 GB DDR2-800
questa schreef op dinsdag 30 augustus 2005 @ 10:06:
[...]
edit:
riezebosch, niet snel posten als ik een voorbeeldje tik!
Moet je ook maar niet alles voorkauwen
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Dit heb ik al uitgelegd. Waar het om gaat is dat er niets verandert aan het object zelf.rwb schreef op dinsdag 30 augustus 2005 @ 11:01:
[...]
Niet helemaal. De As operator returnt als het goed is null als hij niet kan casten en gewoon Casten levert een InvalidCastException op.
Maar al het wel van het type is waar je naar wilt casten zou het idd hetzelfde resultaat op moeten leveren.
Ik zie het nou ja. Had ik even overheen gelezen. Maar idd het veranderd niks aan het object het zorgt alleen dat je een refference van een ander type kunt gebruiken ( Mits het object dat je wilt casten daar natuurlijk wel aan voldoet ) en het is dus ook niet veel anders als het vertellen van de compiler welk type het isquesta schreef op dinsdag 30 augustus 2005 @ 11:37:
[...]
Dit heb ik al uitgelegd. Waar het om gaat is dat er niets verandert aan het object zelf.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Daarom kan ik me niet voorstellen dat het daaraan ligt bij de TS.rwb schreef op dinsdag 30 augustus 2005 @ 11:47:
[...]
Ik zie het nou ja. Had ik even overheen gelezen. Maar idd het veranderd niks aan het object het zorgt alleen dat je een refference van een ander type kunt gebruiken ( Mits het object dat je wilt casten daar natuurlijk wel aan voldoet ) en het is dus ook niet veel anders als het vertellen van de compiler welk type het is
wat dan als je dit doetTrasherXL schreef op dinsdag 30 augustus 2005 @ 10:11:
C#:
1 2 3 MenuItem menuItem = sender as MenuItem; en dan menuItem.Text..... en ((MenuItem)sender).Text blijft empty...
vage shit
1
2
3
4
5
6
7
8
9
| MenuItem menuItem = sender as MenuItem; if( menuItem.Text.Equals( ((MenuItem)sender).Text ) ) { MessageBox.Show( "Gelijk" ); } else { MessageBox.Show( "Niet gelijk" ); } |
Krijg je "Gelijk", "Niet gelijk" of een Exception?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Je moet eigenlijk bijna altijd de as opperator gebruiken als je wilt casten. Anders moet je van die try en catch dingen gaan gebruiken die niet zo fijn zijn voor je preformance.
[ Voor 37% gewijzigd door dotcode op 30-08-2005 14:07 ]
Dat zou idd het antwoord moeten zijn en in deze code naast een InvalidCastException ook de enige mogenlijkheid.dotcode schreef op dinsdag 30 augustus 2005 @ 14:03:
Ik krijg gewoon gelijk er uit, dit is ook met 1.1. Misschien ging er iets mis met compilen waardoor je een verkeerde versie aan het bekijken en debuggen was?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
https://fgheysels.github.io/
Hangt van je cast af. Controleren op null na een as is niet duur, maar moet ook gebeuren. Als je zeker weet dat je cast goed gaat zie ik het probleem niet.dotcode schreef op dinsdag 30 augustus 2005 @ 14:03:
Ik krijg gewoon gelijk er uit, dit is ook met 1.1. Misschien ging er iets mis met compilen waardoor je een verkeerde versie aan het bekijken en debuggen was?
Je moet eigenlijk bijna altijd de as opperator gebruiken als je wilt casten. Anders moet je van die try en catch dingen gaan gebruiken die niet zo fijn zijn voor je preformance.
En een try-catch is niet duur, die wordt pas duur na een Exception.
[ Voor 3% gewijzigd door pjvandesande op 30-08-2005 14:50 ]
Het gooien van een exceptie is duur, die try/catch niet.questa schreef op dinsdag 30 augustus 2005 @ 14:50:
[...]
En een try-catch is niet duur, die wordt pas duur na een Exception.
https://fgheysels.github.io/
Precies!whoami schreef op dinsdag 30 augustus 2005 @ 15:04:
[...]
Het gooien van een exceptie is duur, die try/catch niet.