Help pour form

Signaler
Messages postés
12
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
9 février 2007
-
Messages postés
12
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
9 février 2007
-
Lorsque j'appuye sur un bouton d'une form je voudrai pouvoir appeler une fonction d'une autre form.
NB: avec des parametre pour la fonction
merci
ca fait 2 jour que je cherche

12 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Il suffit d'avoir une référence de la class (form) dans la form ou tu veux appeler ta méthode; et s'assurer bien sur que la méthode en l'occurance est bien public.

// Dans ta form ou t'as le boutton
refForm.MyMethod(myArguments);

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Conceptuellement faire çà c'est crade mais bon.

Ce que tu peux faire c'est mettre ta méthode en static dans la form2

et apres tu fais :
form2.Maméthode

::|The S@ib|::
MVP C#.NET
Messages postés
12
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
9 février 2007

merci mais je crois ne pas avoir bien compris.





en fait ce que j'ai c'est un fenetre avec un datagrid et un bouton recherche.


quand je clique sur recherche une form recherche s'ouvre et la je rentre une partie du nom que je veu rechercher et qaund je clique sur ok je voudrai que ma fonction soit appeler. en sachant que celle si se trouve dans ma premiere form.





ou alors si je met la fonction dans la form recherche savoir comment je peut remplir le datagrid qui ce trouve sur la premiere form.





merci beaucoup :-)
Messages postés
12
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
9 février 2007

voici ma fonction

static
void rechercher_exposant(
string rech)

{


string requete;






string MaConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=gdf.mdb";


requete = "SELECT Num_Exposant as NUM , RaisonSocial_Exposant as Raison_Social,Vedette_Exposant as Vedette, Nom_Exposant as Nom, Prenom_Exposant as Prenom FROM exposants Where nom_Exposant like'%" + rech + "%';";



DataSet MonDataSet;



OleDbDataAdapter MonDataAdaptater;



OleDbConnection Conn =
new
OleDbConnection(MaConn);


MonDataAdaptater =
new
OleDbDataAdapter(requete, MaConn);


MonDataSet =
new
DataSet();


MonDataAdaptater.Fill(MonDataSet, "Recherche");


dataGridView1.DataSource = MonDataSet.Tables["Recherche"].DefaultView;


dataGridView1.AutoSize =
true;


label_Resultat.Text =
Convert.ToString(dataGridView1.RowCount - 1);




}
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Crade ??? pourquoi?
Déclarer la méthode static, ça peut poser des problèmes dans certain contexte non ?

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Tu as qu'a utiliser la propriété DialogResult, en ouvrant ta 2eme form de façon modale.

Petit exemple : La premier form appelle la 2eme. Quand on clique sur le
bouton de celle ci, une méthode de la premiere form est appelée. Tu
peux faire de meme en adaptant ton code (tu as juste a récuperer le
parametre que tu souhaites)




namespace DialogRslt

{



public class Form1 : System.Windows.Forms.Form

{

Button b1 = new Button();

public Form1()

{

InitializeComponent();

}



private void DisCoucou()

{

MessageBox.Show("coucou");

}



private void InitializeComponent()

{

b1.Click += new EventHandler(b1_Click);

this.Controls.Add(b1);

}



private void b1_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

if(f2.ShowDialog() == DialogResult.OK) DisCoucou();

}



[STAThread]

static void Main()

{

Application.Run(new Form1());

}

}



public class Form2 : Form

{

Button b1 = new Button();

public Form2()

{

InitializeComponent();

}



private void InitializeComponent()

{

b1.Click+=new EventHandler(b1_Click);

this.Controls.Add(b1);

}



private void b1_Click(object sender, EventArgs e)

{

this.DialogResult = DialogResult.OK;

this.Close();

}

}



}



Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Bidou, je crois qu'il dit que c'est crade car il me semble que ce n'est pas Thread-safe. (2 forms = 2 threads créés non ?)

Dans son cas, le mieux serait quand meme d'utiliser le couple délégués / évènements, ca deviendrait propre.

Mx
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
C'est ce qui m'est venu à l'esprit après coup aussi.
Mais est-ce vraiment cette raison là?

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Bah crade parceque tu ne met pas de traitement dans une form, le formulaire est seulement une façade. Le modèle, le controller et la vue doivent être distincts. + de modularité , + propre, + fonctionelle, + objet

::|The S@ib|::
MVP C#.NET
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Question de point de vue bien entendu.

L'utilisation de délégate est un bon compromis dans ce cas

::|The S@ib|::
MVP C#.NET
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Non mais jpense que tu as raison TheSaib.

Enfin maintenant, si la personne qui a posé la question débute en C#,
la version de Bidou lui permet de faire qqchose simplifié a l'extreme.

Mx
Messages postés
12
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
9 février 2007

merci pour ce petit truc...

j'ai fait autrement j'ai inclus ma recherche dnas la meme form now.