Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionnamespace EITF2 { public partial class Article : Form { public Imprime Imprime { get; set; } public ImpresDonnées ImpresDonnées { get; set; } public int Index { get; private set; } /// définition pour la fenêtre listearticle. /// </summary> public ListeArticle liste; public int nligne; /// <summary> /// définition pour la datagridview /// </summary> private DataGridView dgv; private object AvanceReculeBindingSource; public DataGridView Dgv { get => dgv; set => dgv = value; } dans mon bouton ----nligne; liste.Dgv.Rows[nligne].Selected = true;
namespace EITF2 { public partial class ListeArticle : Form { /// <summary> /// définition pour la fenêtre article /// </summary> public Article article; public void Dgv_CellContentClick(object sender, DataGridViewCellEventArgs e) { code...... traitement de la ligne sélectionnée //affiche la fenêtre article. (form2) article.Show(); }
using System; using System.ComponentModel; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EITF2 { class AvanceRecule:INotifyPropertyChanged { public string nligne { get { return nligne; } set { nligne = value; GenerereLaNotification(nligne); } } #region INotifyPropertyChanged Membres public event PropertyChangedEventHandler PropertyChanged; private void GenerereLaNotification(string nligne) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(nligne)); } #endregion } }
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
j'ai avec attention lu le code source "interactions entre form".
Dans ce tutoriel il est plus question de passer des données entre deux formulaires.
using System; using System.Collections; using System.Data.Common; using System.Windows.Forms; namespace EITF2 { public partial class ListeArticle : Form //(form1) { /// <summary> /// définition pour la fenêtre article //(form2) /// </summary> public Article article; //pour créer un évènement public EventHandler MoveLigne; /// <summary> /// initialisation de la fenêtre listearticles /// et de la datagridview /// </summary> public ListeArticle() { //initialisation de la fenêtre listearticle InitializeComponent(); //active la fenêtre article article = new Article(); } /// <summary> /// affichage dans la fenêtre article les détails après sélection d'une ligne dans la datagridview /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// public void Dgv_CellContentClick(object sender, DataGridViewCellEventArgs e) { //définition du fournisseur d'acces à la datatbase ...... //code supprimé //récupération du nombre de lignes d'article affichés Nbart = dgv.Rows.Count; //récupère le numéro de la ligne sélectionnée nligne = dgv.Rows[e.RowIndex].Index; //envoie le numéro de ligne à la fenêtre article article.nligne = nligne; //envoie le nombre de ligne à la fenêtre article article.nbart = Nbart; MessageBox.Show("Numéro de la ligne sélectionnée dans la datagridview " + nligne,"N°de la ligne sélectionnée",MessageBoxButtons.OK, MessageBoxIcon.Information); //vérifie si plus de un article affiché if (Nbart > 1) { //rend actif le bouton retour au premier article. article.button1.Enabled = true; //rend actif le bouton recule d'un article. article.button2.Enabled = true; //rend actif le bouton avance d'un article. article.button3.Enabled = true; //rend actif le bouton avance au dernier article. article.button4.Enabled = true; } //affiche la fenêtre article. article.Show(); //ferme la lecture de la table elektor oRdr.Close(); } } } }
using System; using System.Windows.Forms; namespace EITF2 { public partial class Article : Form //(form2) { /// <summary> /// définition pour la fenêtre listearticle //(form1). /// </summary> public ListeArticle liste; public int nligne; public int nbart; //délégué public delegate void MoveLigneEventHandler(object sender, MoveLigneEventArgs e); //event public event MoveLigneEventHandler MoveLigne; /// <summary> /// définition pour la datagridview de la fenêtre listearticle /// </summary> private DataGridView dgv; public DataGridView Dgv { get => dgv; set => dgv = value; } /// <summary> /// initialisation de la fenêtre article /// </summary> public Article() { //initialisation de la fenêtre article InitializeComponent(); } //pour création d'un évènement protected virtual void OnMoveLigne(MoveLigneEventArgs e) { if (MoveLigne != null) MoveLigne(this, e); } /// <summary> /// bouton recule jusqu'au premier article /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Button1_Click(object sender, EventArgs e) { //recule jusqu'au premier article MessageBox.Show("Recule jusqu'au premier article", "Bouton 1", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("nligne = " + nligne, "bouton2", MessageBoxButtons.OK, MessageBoxIcon.Information); //envoie une commande à la datagridview de revenir à la ligne 0 dans la fenêtre listearticle //essais de création d'un évènement pour la fenêtre listearticle nligne = 0; MoveLigneEventArgs Numligne = new MoveLigneEventArgs(false, 0); OnMoveLigne(Numligne); } /// <summary> /// bouton recule d'un article /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button2_Click(object sender, EventArgs e) { //recule d'un article MessageBox.Show("Reclue d'un article", "bouton 2", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("nligne = " + nligne, "bouton2", MessageBoxButtons.OK, MessageBoxIcon.Information); //-1 dans le numéro de la ligne sélectionnée --nligne; //envoie une commande à la datagridview de réculer d'une ligne dans la fenêtre listearticle //liste.Dgv.Rows[nligne].Selected = true; /***************************************************************/ /* si je supprime le double slash devant la ligne ci-dessus, */ /* j'ai un message qui me dit que liste est null à l'execution */ /* d'un clic sur le bouton2 */ /***************************************************************/ } } //ajout d'une class pour la création de l'évènement public class MoveLigneEventArgs : EventArgs { private int nligne; //constructeur public MoveLigneEventArgs(bool v, int nligne) { this.nligne = nligne; } //propriétés public int NumLigne { get { return nligne; } } } }
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
qui ne donne pas de problème au débuggage.
{ /// <summary> /// définition pour la fenêtre listearticle //(form1). /// </summary> public ListeArticle liste;//ici par exemple public int nligne;//et là public int nbart;// et là encore
/// <summary> /// définition pour la datagridview de la fenêtre listearticle /// </summary> private DataGridView dgv; public DataGridView Dgv { get => dgv; set => dgv = value; }
//envoie le numéro de ligne à la fenêtre article article.nligne = nligne; //envoie le nombre de ligne à la fenêtre article article.nbart = Nbart;
public ListeArticle() { //initialisation de la fenêtre listearticle InitializeComponent(); //active la fenêtre article article = new Article(); article. MoveLigne += .....// quand tu taperas += Visual Studio va te proposer d'écrire tout seul la suite et la méthode associée, pour valider tape Tab 2 fois }
public partial class Article : Form { public Imprime Imprime { get; set; } public ImpresDonnées ImpresDonnées { get; set; } /// définition pour la fenêtre listearticle. /// </summary> public ListeArticle liste; private int nligne; public int Nligne { get => nligne; set => nligne = value; } private int nbart; public int Nbart { get => nbart; set => nbart = value; } //délégué public delegate void MoveLigneEventHandler(object sender, MoveLigneEventArgs nligne); //event public event MoveLigneEventHandler MoveLigne; /// <summary> /// définition pour la datagridview /// </summary> private DataGridView dgv; public DataGridView Dgv { get => dgv; set => dgv = value; } /// <summary> /// initialisation de la fenêtre article /// </summary> public Article() { //initialisation de la fenêtre article InitializeComponent(); } //pour la création de l'évènement protected virtual void OnMoveLigne(MoveLigneEventArgs nligne) { if (MoveLigne != null) MoveLigne(this, nligne); } public void Button1_Click(object sender, EventArgs e) { //recule jusqu'au premier article MessageBox.Show("Recule jusqu'au premier article", "Bouton 1", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("nligne = " + Nligne, "bouton2", MessageBoxButtons.OK, MessageBoxIcon.Information); //envoie une commande à la datagridview de revenir à la ligne 0 dans la fenêtre listearticle this.nligne = 0; MoveLigneEventArgs nligne = new MoveLigneEventArgs(false, 0); OnMoveLigne(nligne); } /// <summary> /// bouton recule d'un article /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button2_Click(object sender, EventArgs e) { //recule d'un article MessageBox.Show("Reclue d'un article", "bouton 2", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("nligne = " + Nligne, "bouton2", MessageBoxButtons.OK, MessageBoxIcon.Information); //-1 dans le numéro de la ligne sélectionnée --this.nligne; MoveLigneEventArgs nligne = new MoveLigneEventArgs(false, 0); //envoie une commande à la datagridview de réculer d'une ligne dans la fenêtre listearticle OnMoveLigne(nligne); } public class MoveLigneEventArgs : EventArgs { private int nligne; //constructeur public MoveLigneEventArgs(bool v, int nligne) { this.nligne = Nligne; } //propriétés public int Nligne { get { return nligne; } set { this.nligne = value; } } } --
/// <summary> /// Définition pour l'abonnement à moveligne /// </summary> public Article.MoveLigneEventHandler Article_MoveLigne { get; private set; } public ListeArticle() { //initialisation de la fenêtre listearticle InitializeComponent(); //vérification si la fenêtre article. est active ou non article = new Article(); //abonne listearticle à l'évènement moveligne article.MoveLigne += Article_MoveLigne1; private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { Dgv.Rows[nligne.Nligne].Selected = true; article.Refresh(); this.Refresh(); }
this.nligne = 0;//là c'est un int MoveLigneEventArgs nligne = new MoveLigneEventArgs(false, 0); // et là c'est un eventArg.... danger OnMoveLigne(nligne);
--this.nligne;//ici tu décomptes une ligne MoveLigneEventArgs nligne = new MoveLigneEventArgs(false, 0);// et là tu forces à 0
//envoie une commande à la datagridview de réculer d'une ligne dans la fenêtre listearticle OnMoveLigne(new MoveLigneEventArgs(false, --this.nligne););
//pour la création de l'évènement protected virtual void OnMoveLigne() { if (MoveLigne != null) { MoveLigne(this, new MoveLigneEventArgs(false, this.nligne)); } }
//retour à 0 this.nligne = 0; OnMoveLigne(); //ligne précédente this.nligne--; OnMoveLigne();
private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { //assagne la nouvelle valeur de ligne de sélection Dgv.Rows[nligne.Nligne].Selected = true; //rafraichie la fenêtre listearticle this.Refresh(); //appel la fonction dgv_cellcontentclick Dgv_CellContentClick(sender, e); }
private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { //assagne la nouvelle valeur de ligne de sélection Dgv.Rows[nligne.Nligne].Selected = true; //rafraichie la fenêtre listearticle this.Refresh(); //appel la fonction dgv_cellcontentclick Dgv_CellContentClick(sender, e);//d'où il sort ce e? }
MettreAJour(int NumeroLigne) { //envoie le numéro de ligne à la fenêtre article article.nligne = NumeroLigne; //envoie le nombre de ligne à la fenêtre article article.nbart = dgv.Rows.Count; }
MettreAJour(e.RowIndex);
nligne = dgv.Rows[e.RowIndex].Index;c'est comme "monter en haut", tu te sers du numéro de la ligne sélectionnée, pour la sélectionner et prendre son numéro.
private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { //assagne la nouvelle valeur de ligne de sélection Dgv.Rows[nligne.Nligne].Selected = true; //rafraichie la fenêtre listearticle this.Refresh(); //appel la fonction dgv_cellcontentclick MettreAJour(nligne); }