IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème désactivation bouton


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 130
    Points
    130
    Par défaut Problème désactivation bouton
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    private void mainBindingSource_CurrentChanged( object sender, EventArgs e )
            {
                BindingSource bs = sender as BindingSource;
     
                // [...]
                btnDelete.Enabled = bs.Current != null;
     
            }
     
    private void btnDelete_Click( object sender, EventArgs e )
            {
                mainBindingSource.RemoveCurrent();
                MAJStatusLabel();
            }

    J'ai un problème à ce niveau là...
    LE bouton Delete ne doit pas être activable quand il n'y a aucun champ dans le DataGridView (par extension, dans le BindingSource).

    ça marche très bien quand on démarre une nouvelle liste (RAZ du bindingSource)

    MAis si on supprime le dernier champ en appuyant sur le bouton Delete...
    le RemoveCurrent appelle l'évènement CurentChanged
    et là, ça passe pas...
    car on désactive le bouton Delete alors que l'on est encore dans l'appel de celui-ci...

    l'erreur est du style:

    ************** Texte de l'exception **************
    System.IndexOutOfRangeException: L'index -1 n'a pas de valeur.
    à System.Windows.Forms.CurrencyManager.get_Item(Int32 index)
    à System.Windows.Forms.DataGridView.DataGridViewDataConnection.OnRowEnter(DataGridViewCellEventArgs e)
    à System.Windows.Forms.DataGridView.OnRowEnter(DataGridViewCell& dataGridViewCell, Int32 columnIndex, Int32 rowIndex, Boolean canCreateNewRow, Boolean validationFailureOccurred)
    à System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
    à System.Windows.Forms.DataGridView.SetAndSelectCurrentCellAddress(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick, Boolean clearSelection, Boolean forceCurrentCellSelection)
    à System.Windows.Forms.DataGridView.MakeFirstDisplayedCellCurrentCell(Boolean includeNewRow)
    à System.Windows.Forms.DataGridView.OnEnter(EventArgs e)
    à System.Windows.Forms.ContainerControl.UpdateFocusedControl()
    Ce qui est bizarre, c'est que l'erreur est un indexOutOfRange (-1) par rapport au DataGridView...

    J'ai fait divers test et j'en ai conclu que c'est la désactivation du bouton Delete qui pose problème...


    JE sais pas trop comment réglé ce problème :/ .
    Et si quelq'un peut m'expliquer le pourquoi de l'exception également, ça m'intéresse

    merci

  2. #2
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    Bonsoir
    Je n’ai pas trop compris ton question.
    Mais je vais répondre selon ma compréhension, tu veux activer ou désactiver un button selon le nombre des lignes de ton DataGridView si >0 alors ton button va être activer sinon désactiver c'est ca?
    Pour l'activer il faut juste Controller le nombre des lignes de ton DGV ou le Binding avec dataGridView2.Rows.Count si c'est >0 alors btn activer sinon désactivé.
    C'est bien ca ou je me trompe?
    Sinon si y'a pas des donnée dans la DGV pour quoi on ajoute un button? Normalement le button existe seulement s'il ya des données hein?

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 130
    Points
    130
    Par défaut
    mhhhh

    en gros, ya le BindingSource(le DGV est binder sur le BindingSource)

    j'ai un bouton supprimer qui fait un BindingSource.RemoveCurrent

    ce bouton doit être grisé s'il n'y a pu de données dans le BindingSource.

    j'utilise pour ça l'événement CurrendChanged du BindingSource:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    btnDelete.Enabled = bs.Current != null;

    Ce code marche SAUF
    s'il est appelé à partir de l'événement Cliick du bouton:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void btnDelete_Click( object sender, EventArgs e )
            {
                mainBindingSource.RemoveCurrent();

    Ce code fait appel au CurrendChanged du BindingSource et au moment de passer sur la ligne d'au-dessus (btdDelete.Enabled = ...)

    j'ai une erreur:
    System.IndexOutOfRangeException: L'index -1 n'a pas de valeur.
    Le StackTrace est présentée dans mon premier message...


    > Je voulais savoir pourquoi ça me faisait ça et comment y remédier.

Discussions similaires

  1. Désactivation bouton = formulaire non soumis
    Par Gwipi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/05/2005, 17h11
  2. [C#] problème de bouton transparent
    Par mbibim63 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/05/2005, 15h50
  3. Réponses: 24
    Dernier message: 11/01/2005, 11h12
  4. [FLASH MX]Problème de bouton et de _level
    Par Geilgestorm dans le forum Flash
    Réponses: 9
    Dernier message: 01/07/2004, 17h37
  5. Problème de boutons radio
    Par BRAUKRIS dans le forum Composants
    Réponses: 3
    Dernier message: 03/06/2004, 03h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo