Appel de méthode dans le constructeur de classe [Résolu]

Signaler
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Statut
Membre
Dernière intervention
26 mai 2006
-
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Statut
Membre
Dernière intervention
26 mai 2006
-
Bonjour à tous, je viens d'écumer le web et ce forum, et je ne trouve pas la réponse à mon problème sûrement parceque il est trop simple ! Je suis en train de réaliser ces cours : http://www.labo-dotnet.com/Articles/Mobile/SQL%20Server%20CE,%20DataGrid%20et%20DataSet/Cr%C3%A9ation%20d%E2%80%99une%20base%20de%20donn%C3%A9es%20et%20de%20tables/0/1492.aspx
et il est dit : "l vous suffit d'appeler cette méthode dans le constructeur de votre classe"

oO ?? ue ce la signifie t'il ?
j'ai essayé :

namespace c_1_1
{
/// <summary>
/// Summary description for form.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// Main menu for the form.
/// </summary>
private System.Windows.Forms.MainMenu mainMenu1;

public Form1()
{
InitializeComponent();
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.Menu = this.mainMenu1;

this.Text = "Form1";
}

#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
Application.Run(new Form1());
CréerBaseDeDonnées();

}

void CréerBaseDeDonnées()
{
if (System.IO.File.Exists("BandeDessinée.sdf") == false)
{ SqlCeEngine engine new SqlCeEngine("Data source BandeDessinée.sdf");
engine.CreateDatabase();
engine.Dispose();
}
}

...

L'erreur est : An object reference is required for the nonstatic field méthod, or property : c1_1.form1.CréerBaseDeDonnées();

Voila J'espère que vous pourrez m'aider ! Quelle est l'erreur ?

Merci

3 réponses

Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
6 février 2009
1
Salut,

le constructeur de ta class Form1 est :
public Form1()
{
InitializeComponent();
}

et le :
static void Main()
{
...
}
C'est le point d'entré de ton programme...
Ta méthode ici, ne s'executera que l'orsque ton Application.Run(..) sera terminé, c'est à dire quand tu aura ici fermé ta form1.

<hr>ZeBobo5http://blogs.msdn.com/zebobo5/
N'oubliez pas de cloturer votre post.
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
3
Bonjour,

Le premier problème, ici, n'est pas que CréerBaseDeDonnées est appelée après Application.Run(...), mais que cette méthode n'est pas statique, donc tu ne peux pas l'appeler dans Main (méthode statique) sans disposer d'une instance.


Donc, soit tu déplace l'appel à CréerBaseDeDonnées dans le constructeur de la classe (comme te le conseille ZeBobo5), soit tu changes le code de Main pour qu'il ressemble à cela :



<HR>
Form1 form = new Form1();
form.CréerBaseDeDonnées();
Application.Run(form);
<HR>

Tu peux également faire de CréerBaseDeDonnées une méthode statique, puisque apparemment elle n'accède jamais à des membres d'instance.
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Statut
Membre
Dernière intervention
26 mai 2006

Merci à vous j'ai fais l'appel de mes fonctions dans :

public Form1()
{
InitializeComponent();
ici
}

MErci beaucoup ! Cela fais 3 semaines que j'essaye de créer tes tables vaec du code :)
Il suffit juste que j'y arrive en Vb.Net CF2.0 pasque la c'est du CF1.0 :)