Toon posts:

[C#/XAML] Waarom een NullReferenceException

Pagina: 1
Acties:

Onderwerpen


  • Jeffroiscool
  • Registratie: December 2006
  • Laatst online: 23-01-2018

Jeffroiscool

Proud DD Member! :D

Topicstarter
Ok, volgens mij ben ik echt gewoon dom geworden maar ik snap niet waarom ik deze error krijg :/



Dus testMessage.Text werkt wel in m'n main maar niet in m'n private void?

League of Legends [Last Updated 22-08-2012]: [EUW] Jeffro (Now:Silver, S1:Bronze), RankedSolo5x5: 1502 [120W/106L], Dominion: 84W, TT: 3W, Normal: 504W


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 26-05 18:56

Snake

Los Angeles, CA, USA

Is textMessage null?

Going for adventure, lots of sun and a convertible! | GMT-8


  • Jeffroiscool
  • Registratie: December 2006
  • Laatst online: 23-01-2018

Jeffroiscool

Proud DD Member! :D

Topicstarter
Nope, zoals ik al zei, hij werkt wel in main, maar niet in m'n functie?

Edit: Althans hij geeft dat nu wel aan onderin, maar hoe kan dat, ik maak hem toch echt netjes aan in m'n xaml?

[Voor 22% gewijzigd door Jeffroiscool op 30-06-2011 15:02]

League of Legends [Last Updated 22-08-2012]: [EUW] Jeffro (Now:Silver, S1:Bronze), RankedSolo5x5: 1502 [120W/106L], Dominion: 84W, TT: 3W, Normal: 504W


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 26-05 18:56

Snake

Los Angeles, CA, USA

Niets in de call stack wat bruikbaar is?

Going for adventure, lots of sun and a convertible! | GMT-8


  • Jeffroiscool
  • Registratie: December 2006
  • Laatst online: 23-01-2018

Jeffroiscool

Proud DD Member! :D

Topicstarter
Snake schreef op donderdag 30 juni 2011 @ 15:02:
Niets in de call stack wat bruikbaar is?
Kan er weinig aan zien, ik merk nu dat als ik die regel op een knop zet dat het wel gewoon werkt maar niet op een selectedGame_SelectionChanged?

League of Legends [Last Updated 22-08-2012]: [EUW] Jeffro (Now:Silver, S1:Bronze), RankedSolo5x5: 1502 [120W/106L], Dominion: 84W, TT: 3W, Normal: 504W


  • Puc van S.
  • Registratie: Maart 2002
  • Laatst online: 03:09
Jeffroiscool schreef op donderdag 30 juni 2011 @ 15:05:
[...]

Kan er weinig aan zien, ik merk nu dat als ik die regel op een knop zet dat het wel gewoon werkt maar niet op een selectedGame_SelectionChanged?
De SelectionChanged van dat element gaat niet toevallig al af voordat textmessage geïnitialiseerd is?

[http://www.okbreijnen.nl] [Overwatch] [Cennahysh]


  • Jeffroiscool
  • Registratie: December 2006
  • Laatst online: 23-01-2018

Jeffroiscool

Proud DD Member! :D

Topicstarter
M1lamb3r schreef op donderdag 30 juni 2011 @ 15:08:
[...]


De SelectionChanged van dat element gaat niet toevallig al af voordat textmessage geïnitialiseerd is?
Hmm, het lukt me nu wel om een static message erin te gooien die idd direct af gaat, maar m'n orginele bedoeling wil dus niet lukken.

De vraag is dan natuurlijk waarom gaat die direct af?

Edit: Hij word idd direct aangeroepen. Is dit altijd zo met comboboxes? Ik wil in principe dat als ik een andere selectie maak in de combobox dat ik bepaalde variablen aanpas (nu dus met een textblock als test)

[Voor 20% gewijzigd door Jeffroiscool op 30-06-2011 15:16]

League of Legends [Last Updated 22-08-2012]: [EUW] Jeffro (Now:Silver, S1:Bronze), RankedSolo5x5: 1502 [120W/106L], Dominion: 84W, TT: 3W, Normal: 504W


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 12-05 13:35
Jeffroiscool schreef op donderdag 30 juni 2011 @ 15:01:
[...]

Nope, zoals ik al zei, hij werkt wel in main, maar niet in m'n functie?

Edit: Althans hij geeft dat nu wel aan onderin, maar hoe kan dat, ik maak hem toch echt netjes aan in m'n xaml?
Set eens een breakpoint in Main & in je event handler want volgens mij word je eventhandler gewoon te vroeg aangeroepen oid.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:25

.oisyn

Moderator Devschuur® / Cryptocurrencies

Demotivational Speaker

Jeffroiscool schreef op donderdag 30 juni 2011 @ 14:58:
Ok, volgens mij ben ik echt gewoon dom geworden maar ik snap niet waarom ik deze error krijg :/

[afbeelding]

Dus testMessage.Text werkt wel in m'n main maar niet in m'n private void?
Plaats een breakpoint op testMessage.Text = "Hallo" in je main, om er waarschijnlijk vervolgens achter te komen dat je event wordt getriggerd voordat je breakpoint hit.

.edit: goddomme creepy :). Reacties moven icm de topic notification == no good.

[Voor 4% gewijzigd door .oisyn op 30-06-2011 15:35]

If I had a dollar for every time I didn't know what was going on, I'd be like: "Why am I always getting all this money?!"


  • Jeffroiscool
  • Registratie: December 2006
  • Laatst online: 23-01-2018

Jeffroiscool

Proud DD Member! :D

Topicstarter
.oisyn schreef op donderdag 30 juni 2011 @ 15:34:
[...]


Plaats een breakpoint op testMessage.Text = "Hallo" in je main, om er waarschijnlijk vervolgens achter te komen dat je event wordt getriggerd voordat je breakpoint hit.

.edit: goddomme creepy :)
Ben net achter gekomen wat het was, http://www.telerik.com/co...ires-on-initial-load.aspx

Blijkt dat dit gwn de behaviour is, ik heb de isSelected weggehaald en in m'n main dit neergezet: selectedGame.SelectedIndex = 0;

Werkt goed :)

League of Legends [Last Updated 22-08-2012]: [EUW] Jeffro (Now:Silver, S1:Bronze), RankedSolo5x5: 1502 [120W/106L], Dominion: 84W, TT: 3W, Normal: 504W


Acties:
  • 0Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 13:39

Armageddon_2k

Trotse eigenaar: Yamaha R6

/me Gebruikt voor dit soort dingen wel een stiekum een globale variabele

Je maakt dan een globale var bijvoorbeeld:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private EveryInitialised As Boolean

'Ben even de echte eventnaam kwijt
Private Sub AfterInitialize()
    EveryInitialised = true
End Sub

Private Sub Vervelend_Event_Dat_Te_Vroeg_Triggert()

    If Not EverythinInitilized then exit sub

'Code hieronder

End sub

Acties:
  • 0Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Armageddon_2k schreef op vrijdag 01 juli 2011 @ 11:26:
/me Gebruikt voor dit soort dingen wel een stiekum een globale variabele

Je maakt dan een globale var bijvoorbeeld:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private EveryInitialised As Boolean

'Ben even de echte eventnaam kwijt
Private Sub AfterInitialize()
    EveryInitialised = true
End Sub

Private Sub Vervelend_Event_Dat_Te_Vroeg_Triggert()

    If Not EverythinInitilized then exit sub

'Code hieronder

End sub
Het is natuurlijk makkelijker om gewoon de eventhandler dan pas in Sub_AfterInitialize te binden ;)

“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.”


Anoniem: 414061

Dit is een geval: nullreference van een xaml control. Wanneer je properties wilt aanpassen van een xaml control hoor je dat daar niet te doen, omdat hij daar nog niet geinitialiseerd is. Dit is pas gedaan wanneer de onload event handler is afgevuurd. Dit is een event van de class FrameworkElement (de base class in dit geval van de window). Deze wordt afgevuurd nadat alle xaml variabelen (controls in de .xaml sheet) zijn geinitialiseerd. Daar is het ook gebruikelijk om de attributen te setten van de verschillende controls.

Hieronder een voorbeeld hoe je dit vanuit je mainwindow kunt oplossen:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponents();
        Loaded += new RoutedEventHandler(LoadingCompleted);
    }
    
    private void LoadingCompleted(object sender, RoutedEventArgs args)
    {
        testMessage.Text = "Hallo!";
    }
}

Wat je ook zou kunnen doen is een loaded event toevoegen in de xaml op je textbox (aan je variabele te zien gok ik dat het gaat om een textbox :P) en vervolgens op dat event reageren.

Ben je ook geen dingen als globale variabelen nodig ;)

[Voor 18% gewijzigd door Anoniem: 414061 op 07-07-2011 00:41]

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee