3 votes

Comment désactiver les infobulles pour l'ensemble d'une colonne DataGridView .net ?

J'ai une grille de données winform qui contient une colonne de boutons. J'aimerais désactiver les infobulles pour cette colonne uniquement - les infobulles devraient toujours s'afficher pour les autres colonnes. Je trouve que les infobulles empêchent de cliquer sur le bouton : lorsqu'on clique sur l'infobulle, l'événement de clic ne se répercute pas sur le bouton. C'est très ennuyeux.

J'ai essayé de traiter l'événement CellTooltipNeeded et de renvoyer null ou une chaîne vide pour cette colonne, mais l'info-bulle revient alors à l'affichage du texte du bouton dans l'info-bulle. J'ai également essayé de donner à Column.ToolTipText la valeur d'une chaîne vide, ce qui a permis de masquer correctement l'info-bulle de l'en-tête de colonne, mais l'info-bulle de toutes les autres lignes reste affichée.

Quel est le meilleur moyen de désactiver les infobulles pour une colonne entière ?

Merci Jimmy

6voto

Mark K Points 106

J'ai cherché une réponse à cette question mais tous les forums ont déclaré que ce n'était pas possible. Cependant, j'ai trouvé une solution.

Sur votre DataGridView, gérez l'événement CellMouseEnter. Dans le gestionnaire d'événement, l'élément DataGridViewCellEventArgs contient une propriété ColumnIndex. Utilisez-la pour définir le DataGridView.ShowCellToolTips propriété. Comme ceci (excusez le VB s'il vous plaît) :

Private Sub MyDataGridView_CellMouseEnter(sender As Object, e as DataGridViewCellEventArgs) Handles DataGridView.CellMouseEnter
    MyDataGridView.ShowCellToolTips = e.ColumnIndex = <the Column # I want to show Tooltips>
End Sub

Et, bien évidemment, il est très simple d'activer ou de désactiver cette fonction au niveau de la cellule puisque DataGridViewCellEventArgs contient également un RowIndex propriété.

Je suis seulement désolé d'avoir découvert une réponse cinq ans après que ce message ait été posté !

1voto

Beth Points 6644

Est-ce que le fait de le régler sur un espace vous permet d'obtenir ce que vous voulez ? Sinon, essayez un point ou quelque chose de vraiment minuscule.

1voto

Jimmy Points 1197

Sur la base de La réponse de Mark K Dans le cadre de l'application de l'outil de gestion de l'information, voici une méthode statique qui peut être utilisée pour masquer les infobulles des colonnes de boutons, et les afficher pour les autres colonnes (y compris les en-têtes de colonnes et de lignes).

    public static void CellMouseEnterHandlerToHideTooltipsForButtonColumns(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            DataGridView grid = sender as DataGridView;
            grid.ShowCellToolTips = (e.RowIndex < 0) || (e.ColumnIndex < 0) || !(grid.Columns[e.ColumnIndex] is DataGridViewButtonColumn);
        }
        catch (Exception)
        { }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X