Abfrage eines Bildes in einem DataGridView



  • Ich habe in einem DataGridView eine Spalte vom Typ DataGridViewImageColumn. Ein Bild in Zeile i setze ich folgendermaßen (wobei das Bild als Ressource gespeichert ist):

    dgv[spalteBild.Index, i].Value = Properties.Resources.MeinBild;
    

    Aber wie kann ich es jetzt abrufen?

    dgv[spalteBild.Index, i].Value == Properties.Resources.MeinBild
    

    funktioniert nicht und liefert immer false zurück.



  • kann man denn "MeinBild" ueberhaupt direkt vergleichen ?

    Probiers ma mit dem ".ToString" dazwischen
    also
    dgv[spalteBild.Index, i].Value.ToString() == Properties.Resources.MeinBild.ToString()

    oder noch besser den hashcode



  • Mr Evil schrieb:

    kann man denn "MeinBild" ueberhaupt direkt vergleichen ?

    Ich weiß nicht. Text kann man ja auch vergleichen und die Bitmaps kann man mit = belegen. Also sollte es doch auch möglich sein, zu gucken, welches Bild denn nun geladen wurde.

    Mr Evil schrieb:

    Probiers ma mit dem ".ToString" dazwischen
    also
    dgv[spalteBild.Index, i].Value.ToString() == Properties.Resources.MeinBild.ToString()

    Das liefert nur "System.Drawing.Bitmap"

    Mr Evil schrieb:

    oder noch besser den hashcode

    Der scheint auch nicht identisch zu sein.



  • Aber wie kann ich es jetzt abrufen?
    dgv[spalteBild.Index, i].Value as Bitmap

    Damit rufst Du es doch ab. Oder willst Du es vergleichen ?! (Schau Dir mal Bitmap.Equal an).

    Aber warum willst Du das Bild vergleichen ?!



  • --- schrieb:

    Aber wie kann ich es jetzt abrufen?
    dgv[spalteBild.Index, i].Value as Bitmap

    Damit rufst Du es doch ab. Oder willst Du es vergleichen ?! (Schau Dir mal Bitmap.Equal an).

    Aber warum willst Du das Bild vergleichen ?!

    Naja, ich will nicht den Bildinhalt vergleichen, sondern lediglich wissen, welches Bild geladen ist. Der Grund ist folgender: Die Daten in dem DataGridView werden säter in eine Datenbank gespeichert und die Bitmap-Spalte zeigt dem Benutzer, ob die Werte in der Zeile alle syntaktisch korrekt sind. (Wenn ein Datum verlangt wird, und man einen Text eingibt, ist es zum Beispiel ein Fehler.) Ein rotes X als Bild würde dann anzeigen: In dieser Zeile sind die Einträge nicht alle korrekt. (Das Bild wird bei jedem CellValueChanged entsprechend aktualisiert.)
    Wenn der Benutzer nun auf Speichern klickt, gehe ich jede Zeile durch und gucke nochmal, welches Bild gerade geladen ist. Wenn noch irgendwo das Fehler-Bild steht, gibt es eine extra Fehlerausgabe und das Speichern wird nicht durchgeführt.





  • ich haeatte eine idee
    leite das Bitmap in einem eigenen ab - und fuege noch ein "id" property hinzu
    dann kannst du dann direkt das zugewiesene bild anhand seiner id vergleichen



  • Ich würde auch den Hashcode vergleichen...


Anmelden zum Antworten