[C#] UserControl mit PictureBox - Image Value im Designer nicht löschbar?


Asterix-Ac

Erfahrenes Mitglied
Hallo Leute,

ich habe mir ein UserControl gebastelt, dass eine PictureBox enthält.
Dem Control habe ich 3 weitere Images hinzugefügt, so dass ich 2 Sets von Mouseover habe.
Die Funktion als solches klappt auch (is ja nich wirklich schwierig :)). Aber Wenn ich im Designer die ausgewählten Images wieder entfernen möchte, ist das unmöglich. Sie sind unlöschbar.
Hier vielleicht mal ein Bischen Code :
Ich habe mir 4 Klassenvariablen für die Images deklariert aber noch nicht instantiiert.
Code:
public Image Image
{
  get
  {
    return pictureBox1.Image;
  }
  set
  {
    pictureBox1.Image = value;
    _outImage = (Bitmap)pictureBox1.Image;
  }
}
Mit jeder Eigenschaft weise ich die Images zu.
Folgende Methoden habe ich(die aber eigentlich für den Designer nicht relevant sind):

PictureBox1MouseEnter
PictureBox1MouseHover
PictureBox1MouseLeave
OnLoad
OnResize
OnPaint

Die On... Methoden hatte ich nur Testweise drin, bis mir dann aufgegangen ist, dass die ja nur zur Laufzeit benötigt werden.

Müssen die Images nicht irgendwo Disposed werden? Aber wo?

Über viel Hilfe würde ich mich viel freuen,

Asterix
 

Spyke

Premium-User
Designer->Eigenschaftenfenster->Image->[...] (Button)
in dem sich dir nun dargebotenem Formular müsstest du doch einen Button Clear (löschen, oder ka was da auf deutsch steht) sehen. Auf den klicken.

Alternativ kannst du dir auch den Code der resx Datei des UserControls anzeigen lassen und die Bildinformationen per Hand rauslöschen.

Oder hab ich das Problem falsch verstanden :confused:
 

Asterix-Ac

Erfahrenes Mitglied
Hallo Spyke,

also ich rede jetzt nicht vom UserControl im Designer, sondern davon, wenn ich aus dem Control ein obj per Designer erstellt habe (SharpDevelop), dass es dann nicht funktioniert.

Wenn ich auf den besagten Button klicke, erscheint nur der normale öffnen-Dialog um das Image einzufügen. Wenn ich ein Bild entfernen wollte, habe ich bisher bei einer PictureBox entweder einen rechtsklick auf "Image" gemacht und dann Zurücksetzen ausgewählt oder daneben auf "System.Drawing.Bitmap" geklickt (Cursor blickte dann drin) und dann EntfernTaste gedrückt.

Die Funktion fehlt. Bei meinem UserControl als obj passiert da nix.:confused:

Asterix
 

PhoenixLoe

Erfahrenes Mitglied
Hallo AsterixAoH,

die "Zurücksetzen"-Option im Designer wird über das DefaultValue-Attribut einer Eigenschaft gesteuert. Du müsstest den Code also so erweitern:

Code:
[DefaultValue(null)]   // Statt null kannst Du auch ein bereits vorhandenes Bild verwenden
public Image Image
{(...)
}
Das Attribut befindet sich im Namespace System.ComponentModel.

Gruß
PhoenixLoe