9
votes

Dessiner un cercle rempli ou un rectangle dans un DataGridViewCell dans C # Winforms

Je veux dessiner un petit cercle rempli au centre d'un DataGridViewCell code>. Un rectangle peut faire le tour aussi. Je suppose que je dois le faire dans l'événement de la cellule de la cellule.

J'ai essayé ceci: p> xxx pré>

 Entrez la description de l'image ici p>

Sa peinture de la cellule entière et je veux juste un petit cercle ou un rectangle car je vous montre dans la photo suivante: p>

Entrez la description de l'image ici p>

Comment puis-je y parvenir? L'utilisation d'un DataGridViewImagecell n'est pas une option car elle a une erreur de formatage. Je peux juste changer ce DataGridViewCheckboxcell à un DataGridViewTextBoxCell. Strike> P>

Edit: strong> Je peux le changer en DataGridViewImagecell !! Ne sais pas ce qui s'est passé avant, mais je ne peux toujours pas charger l'image là-bas. Je viens d'obtenir un carré blanc avec une croix rouge (aucune icône d'image). Voici mon code: P>

dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"] = new DataGridViewImageCell();
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Value = Properties.Resources.punto_verde;
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Style.ForeColor = Color.White;
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Style.SelectionForeColor = Color.White;


1 commentaires

Pourriez-vous simplement étendre la classe de contrôle de bouton radio comme dans Stackoverflow.com/Questtions/6459381/...


3 Réponses :


1
votes

Découvrez les modèles de DataGridView pour personnaliser les colonnes de cette manière. Cela vous donnera plus de contrôle.

Cela peut aider: http://csharp.net-informations.com/datagridview/cshaarp-DataGridView -template.htm


0 commentaires

5
votes

Je l'ai finalement résolu. J'ai dessiné un rectangle rempli de la même taille que la case à cocher et dans le même emplacement.

J'ai procédé à ce qui suit: p>

Premier, je modifie la DataGridViewCheckboxcell en DataGridViewExtBoxCellcell pour masquer la case à cocher. P> xxx pré>

Assurez-vous de sélectionner un prévisueur transparent afin de ne pas voir "FALSE" dans la cellule. P>

Après cela, je viens de peindre le rectangle dans la cellule en utilisant la cellule à l'aide de la cellule Evénement: P>

if (dgv_Cuotas.Columns[e.ColumnIndex].Name == "Seleccionar" && Convert.ToDecimal(dgv_Cuotas.Rows[e.RowIndex].Cells["Restante"].Value) == 0)
            {
                Color c1 = Color.FromArgb(255, 113, 255, 0);
                Color c2 = Color.FromArgb(255, 2, 143, 17);

                LinearGradientBrush br = new LinearGradientBrush(e.CellBounds, c1, c2, 90, true);
                ColorBlend cb = new ColorBlend();
                cb.Positions = new[] { 0, (float)1 };
                cb.Colors = new[] { c1, c2 };
                br.InterpolationColors = cb;

                Rectangle rect = new Rectangle(e.CellBounds.Location.X + 4, e.CellBounds.Location.Y + 4, 13, 13);

                e.Graphics.FillRectangle(br, rect);
                e.PaintContent(rect);
                e.Handled = true;
            }


0 commentaires

7
votes

Merci pour votre question et réponse @andres.

S'il vous plaît voir ma réponse: (Par exemple) J'ai un DataGridView avec 2 colonnes. Dans la colonne, je veux d'abord afficher un cercle de couleur qui la couleur est en écriture (nom de couleur) dans la colonne 2. Pour cela, mon code est: xxx

pour créer un cercle j'écris Ce code de classe: xxx

in cellpainting événement de mon DataGridView, écrivez ce code: xxx

résultat est dataGridView avec 2 Colonnes:

Colonne 1: 6 Cercle avec 6 Couleur spécifique

Colonne 2: 6 Nom de la couleur

Merci.


0 commentaires