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

Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
- 5 mai 2006 à 15:12 - Dernière réponse :
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
- 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
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
- 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é 90 internautes ce mois-ci

Commenter la réponse de zebobo5
Meilleure réponse
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Dernière intervention
30 décembre 2007
- 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é 90 internautes ce mois-ci

Commenter la réponse de dgouttegattat
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
- 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.