Question

J'ai un DataGridView dans une fenêtre modale avec une liste d'options pour mon programme. La grille a deux colonnes. La première contient une case à cocher pour sélectionner cette option, la seconde est le nom / la description de cette option. Le winform contient également des boutons OK et Annuler, mais ce n'est pas tout. Le code ci-dessous fait ce que je veux. En raison de la propriété FullRowSelect, la case à cocher est cochée / décochée lorsque vous cliquez n'importe où dans cette ligne. Cependant, il ne montre plus d'arrière-plan bleu ni de ligne pointillée autour de la ligne actuelle. Comment pourrais-je ajouter ceci sans perdre aucune des fonctionnalités actuelles?

EDIT: pour élaborer; Ce que je veux, c’est d’activer à nouveau la ligne pointillée et / ou le fond bleu de la ligne / des cellules sélectionnées. On dirait que le code que j'ai actuellement désactive en quelque sorte cette ...

Code actuel pertinent:

public OptionsForm()
{
    InitializeComponent();
    OptionsRoot = Options.GetReadOnlyRoot(OptionsBannersNameValueList.GetNameValueList(Settings.Default.OptionsBanners));
    optionsBannersDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    optionsBannersDataGridView.MultiSelect = false;
    optionsBannersDataGridView.RowPrePaint += new DataGridViewRowPrePaintEventHandler(optionsBannersDataGridView_RowPrePaint);
    InitUI();
    Closing += MyFormClosing;
    BindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
}

private void optionsBannersDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    e.PaintParts &= ~DataGridViewPaintParts.Focus;
}
Était-ce utile?

La solution 2

Ce que j’ai finalement décidé de faire, c’est de supprimer la plupart du code mentionné ci-dessus, car il ne faisait pas grand-chose. pour une raison quelconque, lorsque je définis les propriétés dans Visual Studio, cela ne fonctionne pas, mais maintenant, il fonctionne. Je ne sais pas ce qui s’est passé là-bas, mais c’est à côté.

Le constructeur ressemble maintenant à ceci:

public OptionsForm()
    {
        InitializeComponent();
        AlternativerRoot = Alternativer.GetReadOnlyRoot(AlternativerFanerNameValueList.GetNameValueList(Settings.Default.AlternativerFaner));
        InitUI();
        Closing += MyFormClosing;
        _bindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
    }

Les propriétés sont définies dans l'interface graphique de Visual Studio. SelectionMode est défini sur FullRowSelect et MultiSelect sur False.

Je n’avais toujours pas le focus souhaité, j’ai donc défini la couleur de fond de la ligne sélectionnée en bleu et la couleur de prévisualisation en blanc dans Visual Studio. Cela fonctionne maintenant comme je le voulais.

Je ne sais toujours pas pourquoi les propriétés n'étaient pas correctement définies auparavant, mais au moins, cela fonctionne maintenant: P

Autres conseils

J'essaierais d'utiliser .OnCellClick et définissez la couleur de la ligne sur bleu. Je pense que vous devriez également pouvoir ajouter une bordure en pointillé.

Je crois que vous pouvez l'appeler ainsi:

optionsBannersDataGridView.OnCellClick += new DataGridViewCellEventArgs(optionsBannersDataGridView_OnCellClick);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top