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

geii82 25 Messages postés mardi 18 avril 2006Date d'inscription 26 mai 2006 Dernière intervention - 5 mai 2006 à 15:12 - Dernière réponse : geii82 25 Messages postés mardi 18 avril 2006Date d'inscription 26 mai 2006 Dernière intervention
- 5 mai 2006 à 17:08
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
zebobo5 273 Messages postés dimanche 5 octobre 2003Date d'inscription 6 février 2009 Dernière intervention - 5 mai 2006 à 15:47
3
Merci
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.

Merci zebobo5 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de zebobo5
Meilleure réponse
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 5 mai 2006 à 15:56
3
Merci
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.

Merci dgouttegattat 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de dgouttegattat
geii82 25 Messages postés mardi 18 avril 2006Date d'inscription 26 mai 2006 Dernière intervention - 5 mai 2006 à 17:08
0
Merci
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 :)
Commenter la réponse de geii82

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.