J'ai essayé de définir la couleur d'arrière-plan d'une grille de données vue d'être "transparent" à partir de propriétés, mais il a dit "pas une propriété valide".
J'ai fait cette solution à un problème spécifique (lorsque la grille a été contenue dans un formulaire avec l'image d'arrière-plan) avec de simples modifications, vous pouvez l'adapter pour créer un générique Grille transparente, il suffit de demander si le parent de l'image de fond, sinon utilisez simplement le parent backcolor de la peinture de votre grille, et c'est tout.
Vous devez hériter de DataGridView et remplacer le PaintBackground méthode comme ceci:
En vertu de SetCellsTransparent, il suffit d'utiliser this.DefaultCellStyle pour définir .BackColor et, éventuellement - mais je ne le ferais pas) .SelectionBackColor. Pas besoin de le foreach boucle.
je l'ai fait avec Deumber solution et cela fonctionne, mais pose certains problèmes que j'ai évité en ajoutant de petites améliorations:
A. défilement de la DGV bousille l'arrière-plan. solution: mettre quelque part:
publicpartialclass main :Form{protectedoverrideCreateParamsCreateParams{
get
{CreateParams cp =base.CreateParams;
cp.ExStyle|=0x02000000;return cp;}}}
le fond sera toujours de défilement, mais être corrigée immédiatement après chaque étape de défilement. il est remarquable, mais a été acceptable pour moi. quelqu'un sait-il une meilleure solution pour prendre en charge le défilement avec cette?
maintenant, le concepteur de la traite comme une DGV. il échouera si jamais vous voulez tirer le DGV alors que vous n'avez pas de ActiveForm, mais ce n'est pas le cas habituellement. il est également possible de simplement garder le si-ligne alors que vous pouvez toujours utiliser le concepteur, et de la supprimer pour la libération.
Mon seul changement serait de retirer le -3, 3 décalage introduit dans votre Rectangle rectDest. Pour moi, il fait le recadrée de l'Image sensiblement de l'alignement. le -3, 3 est probablement en raison de certaines spécificités dans mon application. je ne me souviens pas pourquoi, mais pour une raison que j'ai besoin d'avoir l'image, là où je le voulais. si c'est missplaced pour vous, jouez avec les chiffres =)
Ensemble datagridview est backcolor même avec la forme de la couleur. Pour ce faire, sélectionnez datagridview: allez dans les Propriétés -> RowTemplate -> DefaultCellStyle -> BackColor et de choisir la couleur de votre forme.
Vous devez définir toutes les lignes et les colonnes transparentes. Moyen le plus facile est:
for(int y =0; y < gridName.Rows[x].Cells.Count; y++){
yourGridName.Rows[x].Cells[y].Style.BackColor=System.Drawing.Color.Transparent;}
Et vous avez besoin de nid que pour la boucle dans l'autre pour obtenir les colonnes... et ce sur th couleur d'arrière-plan des données débarrasser de la vue elle-même.. Cela devrait être possible, au moment de la création.
J'ai fait cette solution à un problème spécifique (lorsque la grille a été contenue dans un formulaire avec l'image d'arrière-plan) avec de simples modifications, vous pouvez l'adapter pour créer un générique Grille transparente, il suffit de demander si le parent de l'image de fond, sinon utilisez simplement le parent backcolor de la peinture de votre grille, et c'est tout.
Vous devez hériter de DataGridView et remplacer le PaintBackground méthode comme ceci:
SetCellsTransparent
, il suffit d'utiliserthis.DefaultCellStyle
pour définir.BackColor
et, éventuellement - mais je ne le ferais pas).SelectionBackColor
. Pas besoin de leforeach
boucle.OriginalL'auteur RJardines
je l'ai fait avec Deumber solution et cela fonctionne, mais pose certains problèmes que j'ai évité en ajoutant de petites améliorations:
A. défilement de la DGV bousille l'arrière-plan. solution: mettre quelque part:
le fond sera toujours de défilement, mais être corrigée immédiatement après chaque étape de défilement. il est remarquable, mais a été acceptable pour moi. quelqu'un sait-il une meilleure solution pour prendre en charge le défilement avec cette?
B. le concepteur a du mal à l'utiliser. solution:
maintenant, le concepteur de la traite comme une DGV. il échouera si jamais vous voulez tirer le DGV alors que vous n'avez pas de ActiveForm, mais ce n'est pas le cas habituellement. il est également possible de simplement garder le si-ligne alors que vous pouvez toujours utiliser le concepteur, et de la supprimer pour la libération.
-3, 3
décalage introduit dans votreRectangle rectDest
. Pour moi, il fait le recadrée de l'Image sensiblement de l'alignement.le
-3, 3
est probablement en raison de certaines spécificités dans mon application. je ne me souviens pas pourquoi, mais pour une raison que j'ai besoin d'avoir l'image, là où je le voulais. si c'est missplaced pour vous, jouez avec les chiffres =)OriginalL'auteur letsdance
Avoir une couleur transparente dans le DataGridView propriété BackGroundColor n'est pas possible.
J'ai donc décidé de synchronisation de cette propriété avec le parent BackColor. Le bon vieux databinding fonction de WinForms est très bon à cela :
Juste après
InitializeComponents();
Je sais que c'est assez vieux, mais cela fonctionne très bien.
OriginalL'auteur Larry
Ensemble datagridview est backcolor même avec la forme de la couleur. Pour ce faire, sélectionnez datagridview: allez dans les Propriétés -> RowTemplate -> DefaultCellStyle -> BackColor et de choisir la couleur de votre forme.
OriginalL'auteur tanzer
Vous devez définir toutes les lignes et les colonnes transparentes. Moyen le plus facile est:
et ce sur th couleur d'arrière-plan des données débarrasser de la vue elle-même..
Cela devrait être possible, au moment de la création.
OriginalL'auteur choudeshell