none
Piloter un dataGridView d'un formulaire principal depuis un deuxième formulaire RRS feed

  • Question

  • Bonjour

    Mon problème du jour. J’ai un formulaire avec une datagridview d’environ 40 Colonnes et 30 lignes représentant le planning d’un mois.

    Mon planning se présente ainsi :

    En colonnes : Nom des agents, 3 Derniers jours du mois précédent, tous les jours du mois courant, et 3 premiers jours du mois suivant.

    L’utilisateur ne peut accéder qu’aux cellules du mois courant.

    Chaque cellule contient ce que j’appelle un ‘Code temps’. Mais, non visible il y a des informations complémentaires qui peuvent être nécessaires suivant la situation de l’agent.

    Pour saisir ces informations complémentaires, un double click sur une cellule ouvre une petite fenêtre qui me permet de faire cette saisie complémentaire.

    Pour l’instant :

    -      je double click sur une cellule,

    -      j’ouvre la fenêtre,

    -      je fais la saisie,

    -      je valide (Bouton ok) et ferme la fenêtre

    -      je passe à une autre cellule et je répète l’opération.

    C’est fonctionnel.

    J’aurai aimé faire ce qui suit (et je n’ai pas pu) :

    -      Je double click sur une cellule,

    -      j’ouvre la fenêtre, je fais la saisie,

    -      je clique sur un bouton (Right, Left, Down, Up suivant la situation), il y a validation de la saisie, la cellule du datagridview se déplace, je continue la saisie de la cellule suivante sans fermer la fenêtre. Et ainsi de suite.

    -      Je ferme la fenêtre et reviens sur mon planning

    J’espère que mes explications sont claires.

    remerciements


    Jean PERIGNY, Développeur
    jeudi 3 juin 2010 05:57

Réponses

  • Bonjour,

     

    Premièrement, il faut passer une référence au formulaire principale (le formulaire avec le datagridview, Form1) dans le constructeur du deuxième formulaire (Form2). Pour faire ça, il faut surcharger le constructeur par défaut et créer un constructeur qui reçoit un objet de type Form1. Le formulaire Form2 aura une propriété de type Form1 qui reçoit la référence.

     

    A l’aide de cette propriete vous aurez acces aux controles du formulaire principal. Ensuite, vous pouvez selecter la cellule desiree du formulaire principal en envoyant des commandes des methodes du formulaire secondaire.

     

    Pour sélecter les cellules vous travaillerez avec

    dataGridView1.CurrentCell.ColumnIndex et RowIndex et

    dataGridView1.Rows(a).Cells(b).Selected = false/true

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    • Marqué comme réponse jperigny vendredi 4 juin 2010 09:41
    jeudi 3 juin 2010 14:53
  • Bonjour,

     

    On declare le formulaire Form2 :

    Public Class Form2

     

        Private myf As Form1

     

        Public Sub New(ByRef F As Form1)

            myf = F

        End Sub

     

    End Class

     

     

    On ajoute un formulaire Form1:

     

    Public Class Form1

     

     

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim x As New Form2(Me)

            x.Show()

        End Sub

    End Class

     

    Dans le formulaire Form1 on crée un objet de type Form2 et on passe un référence de type Form1. Maintenant, l’objet Form2 contient dans sa propriété une référence à Form1.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    • Marqué comme réponse jperigny vendredi 4 juin 2010 09:41
    vendredi 4 juin 2010 09:14

Toutes les réponses

  • Bonjour,

     

    Premièrement, il faut passer une référence au formulaire principale (le formulaire avec le datagridview, Form1) dans le constructeur du deuxième formulaire (Form2). Pour faire ça, il faut surcharger le constructeur par défaut et créer un constructeur qui reçoit un objet de type Form1. Le formulaire Form2 aura une propriété de type Form1 qui reçoit la référence.

     

    A l’aide de cette propriete vous aurez acces aux controles du formulaire principal. Ensuite, vous pouvez selecter la cellule desiree du formulaire principal en envoyant des commandes des methodes du formulaire secondaire.

     

    Pour sélecter les cellules vous travaillerez avec

    dataGridView1.CurrentCell.ColumnIndex et RowIndex et

    dataGridView1.Rows(a).Cells(b).Selected = false/true

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    • Marqué comme réponse jperigny vendredi 4 juin 2010 09:41
    jeudi 3 juin 2010 14:53
  • Bonjour,

    désolé, je n'arrive pas a comprendre la passation de la référence au formulaire principale dans le constructeur du deuxième. je ne visualise pas ce qui il y a à faire. Pour l'instant je fais un simpe Form2.ShowDialog(). Vous pouvez m'éclairer plus?

    Remerciements


    Jean PERIGNY, Développeur
    vendredi 4 juin 2010 08:58
  • Bonjour,

     

    On declare le formulaire Form2 :

    Public Class Form2

     

        Private myf As Form1

     

        Public Sub New(ByRef F As Form1)

            myf = F

        End Sub

     

    End Class

     

     

    On ajoute un formulaire Form1:

     

    Public Class Form1

     

     

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim x As New Form2(Me)

            x.Show()

        End Sub

    End Class

     

    Dans le formulaire Form1 on crée un objet de type Form2 et on passe un référence de type Form1. Maintenant, l’objet Form2 contient dans sa propriété une référence à Form1.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    • Marqué comme réponse jperigny vendredi 4 juin 2010 09:41
    vendredi 4 juin 2010 09:14
  • C'est génial, je ne l'avais pas bien compris depuis l'atelier 2 du Coach VB.

    remerciements


    Jean PERIGNY, Développeur
    vendredi 4 juin 2010 09:40
  • Bonjour,

    En me basant sur les informations que j'ai obtenu ici, j'ai voulu refaire la même chose en C# ... Mais, cela ne fonctionne pas, manquerait-il des infos pour adapter en C#?


    Jean PERIGNY, Développeur
    samedi 18 décembre 2010 03:31