Est-ce que quelqu'un connaît une méthode pour insérer une image en arrière-plan dans un ListBox dans WinForms C#?Définition de l'arrière-plan de WinForm ListBox
3
A
Répondre
6
Eh bien, vous devrez hériter d'un nouveau contrôle de ListBox. Pour cela, créez un nouveau projet dans votre solution, du type « bibliothèque de contrôles Windows », et utiliser le code ci-dessous dans le fichier de code source du contrôle du fichier:
public partial class ListBoxWithBg : ListBox
{
Image image;
Brush brush, selectedBrush;
public ListBoxWithBg()
{
InitializeComponent();
this.DrawMode = DrawMode.OwnerDrawVariable;
this.DrawItem += new DrawItemEventHandler(ListBoxWithBg_DrawItem);
this.image = Image.FromFile("C:\\some-image.bmp");
this.brush = new SolidBrush(Color.Black);
this.selectedBrush = new SolidBrush(Color.White);
}
void ListBoxWithBg_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
/* HACK WARNING: draw the last item with the entire image at (0,0)
* to fill the whole ListBox. Really, there's many better ways to do this,
* just none quite so brief */
if (e.Index == this.Items.Count - 1)
{
e.Graphics.DrawImage(this.image, new Point(0, 0));
}
else
{
e.Graphics.DrawImage(this.image, e.Bounds, e.Bounds, GraphicsUnit.Pixel);
}
Brush drawBrush =
((e.State & DrawItemState.Selected) == DrawItemState.Selected)
? this.selectedBrush : this.brush;
e.Graphics.DrawString(this.Items[e.Index].ToString(), this.Font, drawBrush, e.Bounds);
}
}
J'omis tout le code de concepteur et comme pour brièveté, mais vous devrez vous rappeler à Dispose
de l'image et les pinceaux dans la méthode Dispose
du contrôle.
Questions connexes
- 1. Définition de la couleur d'arrière-plan de Silverlight Listbox
- 2. Définition de l'élément sélectionné dans une ListBox sans bouclage
- 3. Gestion de clavier Winform
- 4. Supprimer l'élément de ListBox?
- 5. Partition de Listbox?
- 6. Comment forcer un contrôle ListBox à recharger des données dans WinForm
- 7. Contrôle de superposition sur Winform
- 8. Thread ListBox C# SharpDevelop
- 9. Définition de DataContext avec SelectedItem par programme
- 10. formulaire de sélection de pixel winform vb.net
- 11. IDisposable Winform
- 12. extension de la GroupStyle de Listbox
- 13. TextBox, Button et ListBox dans un ListBox
- 14. silverlight: définition des contrôles RowDetailsTemplate à partir de RowDetailsVisibilityChanged
- 15. C# Listbox lié à l'entité "Entity Framework"
- 16. Utilisation de profilage d'application Winform/spikes.
- 17. winform: problème de liaison avec DropDownList
- 18. C# Cadre de multithreading pour l'application WinForm
- 19. Problème de style Winform: style Windows classique?
- 20. Faire des onglets de commutation Winform
- 21. comparaison de WPF avec le contrôle WINFORM
- 22. Exemples de travail d'applications winform/WPF
- 23. C# WINForm évite deux boîtes de message
- 24. Annulation de SelectedIndexChanged dans WinForm ListView
- 25. Actualiser l'URL webbrowser à partir de winform
- 26. classe de base générique pour WinForm UserControl
- 27. .NET Winform Services de connexion AJAX
- 28. Définition de variable SQLPlus
- 29. Définition de correction?
- 30. Définition de deux SpriteSortModes?
Merci Scraimer, c'est bon j'ai changé quelques lignes mais à la fin c'est du travail. Amuse-toi bien – JayJay