j'ai créer la classe suivante dans Visual Studio 2010:Problème créant instance d'une classe
public class Bat : Form1
{
public int BatLocation;
public void draw()
{
Pen batPen = new Pen(Color.Black);
batPen.Width = 10;
playArea.DrawRectangle(batPen, BatLocation, (picPlayArea.Height - 30), 50, 10);
}
}
Mais lorsque je tente de créer une instance de la classe, je reçois une exception de débordement de pile, me conseillant de assurez-vous que je n'ai pas une boucle infinie ou une récursion infinie. J'ai essayé de créer l'instance de deux façons différentes, comme ci-dessous:
Bat bottomBat;
bottomBat = new Bat();
et
Bat bottomBat = new Bat();
Mais les deux sens revenir la même erreur lorsque je tente d'exécuter le programme. J'ai également essayé la définition de classe avec et sans le modificateur public
. Je suis assez nouveau à la programmation et n'ai aucune idée de ce qui pourrait causer ce problème. Est-ce que je fais quelque chose de mal?
Edit: Le code de la classe Bat
est tout ce que j'ai en ce moment, ne l'ai pas créé un constructeur spécifique pour cela ... Ne pense pas que je devais?
Quoi qu'il en soit, voici la classe Form1 dans son intégralité:
public partial class Form1 : Form
{
// Define various objects for the game
public Graphics playArea;
Bat bottomBat = new Bat();
public Form1()
{
InitializeComponent();
// Create instances of objects
playArea = picPlayArea.CreateGraphics();
//bottomBat = new Bat();
// Delegate the mouseMove event for picPlayArea
picPlayArea.MouseMove += new MouseEventHandler(picPlayArea_MouseMove);
}
private void picPlayArea_MouseMove(object sender, MouseEventArgs e)
{
bottomBat.Location = e.X;
}
private void btnExit_Click(object sender, EventArgs e)
{
string msg = "Are you sure you want to exit?",
title = "Confirm Exit";
DialogResult res = MessageBox.Show(msg, title, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (res == DialogResult.Yes)
{
Environment.Exit(0);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
// This is where most of the functionality is executed within the game
playArea.Clear(Color.White);
}
private void btnStart_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
}
Il n'y a pas assez d'informations ici. Pouvez-vous poster le code pour tous les constructeurs de la classe ainsi que ceux de ses classes de base? (Vous pouvez vous arrêter une fois que vous avez atteint une classe de base qui est une classe BCL) – Ani
Le code que vous avez posté (moins la ligne référençant 'playArea') fonctionne très bien pour moi, donc le problème doit se situer dans l'une des parties que vous n'avez pas t poste. –
J'ai ajouté dans le code de la classe Form1, comme demandé –