28. januar 2007 - 21:00Der er
9 kommentarer og 1 løsning
Textbox fejl.
Har 2 filer: Form filen: Game.cs/game.designer.cs - Hvor formen er. Script filen: Ball.cs - Ball scriptet som laver bolde.
Kort: I game.cs bruger jeg en function fra ball.cs til at lave en bolt. Der bruges: manyBall.DrawBall(e.Graphics); Senere bruger jeg en anden function for at få bolden til at bevæge sig: manyBall.MoveBall(manyBall, pictureBox1.Height, pictureBox1.Width);
Har så lavet en textbox for at få X kordiantorene til bolden. Jeg har så tilføjet i Ball.cs: public game sgame; og sgame.textBox1.Text = ball._x.ToString(); i functionen MoveBall
Men får fejlen: Object reference not set to an instance of an object.
Hvad skal jeg gøre for at dne skriver X kordinatoerne i textboxen?? :S
- Prøvede at tilføje try { } catch { } fik selvfølgelig ikke fejlen, men den skriver heller ikke noget :S
dr_chaos, ball._x returner bare tallet i int. og kan godt lave: MessageBox.Show(ball._x.ToString()); hvor den så skriver det. dog utroligt meget spam ^^
Men fejlen: Object reference not set to an instance of an object.
er den samme som når man laver: textBox1.Text = "hey"; InitializeComponent();
Altså før komponeterne er installert. Men forstår bare ikke da de er installert før bolden bliver lavet og brugt.
public game sgame; burde være: private game sgame;
Derved laver du en lokal variabel af typen game, nu skal du så have den lokale variabel til at pege på samme objekt, som din form er. Det kan du gøre i constructoren i din Ball klasse:
class Ball { private Game sgame;
public Ball(Game game) { sgame = game; }
public void SomeMethod() { sgame.textBox1.Text = "Ny tekst"; } }
Så når du instansere din Ball klasse i formen:
Ball ball = new Ball(this);
this peger på klassen selv, og sender derved en reference med af sig selv.
Hmm ? Har tilføjet: public class Ball { public game sgame; public Ball(game game) { sgame = game; } ... osv. i ball.cs og gik ud fra at "SomeMethod()" er min "moveball" så tilføjede
public void MoveBall(Ball ball, int screenHeight, int screenWidth) { sgame.textBox1.Text = "Ny tekst";
der i mod vidste jeg ikke helt hvad du mente med Ball ball = new Ball(this);
Så prøvede at smide det ind i Game.cs: public game() { InitializeComponent(); Ball ball = new Ball(this); Det virkede ik.
Prøvede så at smide det ind i void moveball() men gav en masse fejl.
For at du kan kalde MoveBall() metoden, må du have instansieret Ball klassen et eller andet sted i din form. Der skal du tilrette, så din Ball klasses constructor bliver kaldt med this.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.