Jag har två NumericUpDown:ar som, när deras värden ändras, anropar numericUpDown_ValueChanged. Vid första ändringen går allt bra. Ändrars NumericUpDown:ar ytterligare gånger så händer det skumma grejer med numericUpDown_ValueChanged. Programet går igenom metoden flera gånger och till sist poppar en meddelanderuta upp som säger: There is no source code available for the current location. Detta meddelande kommer bara när man stegar sig igenom koden; inte när programmet körs som vanligt. det är inte så att du har några andra events på samma kontroller? Hmm. Jag har letat, men jag hittar inga andra kontroller som anropar denna metod och det jobbiga är att markören (eller vad man kan kalla den) inte lämnar metoden innan den börjar om från metodens början. När markören kommer till metodens slutparentes hoppar den bara direkt upp till metodens början igen. Ännu jobbigare är att inte du får samma problem :) jag menade inte att andra kontroller anropade samma metod utan att du kanske har något annat som går i spinn när ett värde ändras eller en msgbox visas.. Nej, det blev error. this.numericUpDown1.ValueChanged måste vara till vänster om += eller -=. Jag flyttade Hantering av event
Vad kan vara fel?
this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown_ValueChanged);
this.numericUpDown4.ValueChanged += new System.EventHandler(this.numericUpDown_ValueChanged);
...
private void numericUpDown_ValueChanged(object sender, System.EventArgs e)
{
if (((NumericUpDown) sender).Name.ToString() == numericUpDown1.Name.ToString())
{
MessageBox.Show(((NumericUpDown) sender).Name.ToString());
}
if (((NumericUpDown) sender).Name.ToString() == numericUpDown4.Name.ToString())
{
MessageBox.Show(((NumericUpDown) sender).Name.ToString());
}
} Sv: Hantering av event
tänkte om det blir någon form av loop med fokus mellan msgbox och kontrollen på något sätt...
kör man den koden du visar här fungerar det prima så något mer måste vara inblandat i ditt fall..
//RogerSv:Hantering av event
En tanke är att += kanske ställer till problem; fast då borde det bli trubbel för dig också. Vad tror du?
this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown_ValueChanged);
Man kanske kan sätta this.numericUpDown1.ValueChanged = null, inuti metoden så att den rensas. Jag testar det.Sv: Hantering av event
eftersom koden fungerar fint här så bör det alltså vara något helt annat som är problemet..
testa att lägg på några numericupdowns på ett nytt formulär och testa om det blir samma fel där..Sv: Hantering av event
Inga andra förslag?Sv:Hantering av event
this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown_ValueChanged);
till den automatiskt genererade delan av källkoden och nu funkar det. Jag trodde att detta var förbjuden mark och att V.S. skrev över manuella ändringar i denna del av koden, men det verkar ju inte vara några problem alls.
Tidigare låg eventhandler anropet "i" den panel som innehåller kontrollerna.
Tack för dina insatser!