Sarene Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Hallo, ich würde gerne ein Bild in einer Zelle eines Datagrid angezeigt bekommen. Ich dachte, ich speicher das Bild direkt in das DataTable. Dafür habe ich folgenden Code: Die Deklaration des Bitmaps... Dim bild As Bitmap = New Bitmap(bildpfad) Das Einfügen des Bildes... Dim row As DataRow = dt.NewRow() row(0) = "test1" row(1) ="test2" row(2) = bild Allerdings liefert mir das Datagrid anstatt einem Bild diesen Text --> System.Drawing.Bitmap Den Namespace system.Drawing habe ich auch schon importiert. Ich müsste wohl die GetType-Methode verwenden. Aber wie binde ich das ein?
Guybrush Threepwood Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Du musst die einen eigenen Column und Cell Type anlegen und die Spalte deines Grids dann vom Typ deiner Column machen. Im Constructor deiner Column Klasse weißt du dieser als CustomCellTemplate dann deine eigene Cell Klasse zu und welchen ValueType du dieser Spalte zuweisen willst. In deiner Cell Klasse überschreibst du dann GetFormattedValue und ermittelst dort das Bild aus dem Value der Zelle. Hier mal ein Beispiel von mir wo ich anhand einer Nummer ein bestimmtes Bild anzeige: private class CustomImageColumn : DataGridViewImageColumn { public CustomImageColumn() { this.CellTemplate = new CustomImageCell(); this.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; this.ValueType = typeof(int); } } private class CustomImageCell : DataGridViewImageCell { protected override object GetFormattedValue(object value, int rowIndex, ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context) { if (value != null) { Assembly Assembly = Assembly.GetExecutingAssembly(); return Image.FromStream(Assembly.GetManifestResourceStream(@"MyNamespace." + value.ToString() + ".jpg")); } return null; } } [/PHP] Bei dir müsste dann der ValueType evtl Bitmap sein und du in der GetFormattedValue Methode dieses dann einfach nur zurückgeben. Aber das musst du mal probieren...
Sarene Geschrieben 24. Oktober 2008 Autor Geschrieben 24. Oktober 2008 Hi danke für deine schnelle Antwort. Leider hilft sie mir aber nicht so recht weiter. Das liegt aber eher an meiner fehlenden Programmierfahrung ;-) Ich programmiere das Ganze in VB.net (hätte ich sagen sollen, sorry). Da gibt es zum Beispiel kein DataGridViewImageColumn. Welchen Namespace brauch man dafür? Ich habe nach etwas googlen die Anleitung bekommen, diese GetTyp-Methode bei der Spaltenerzeugen festzulegen...hast du das in etwa gemeint? das sieht dann ungefähr so aus: tabelle.Columns.Add("bild", GetType(bitmap)) Aber das funktioniert leider auch net
Guybrush Threepwood Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Ich programmiere das Ganze in VB.net (hätte ich sagen sollen, sorry). Da gibt es zum Beispiel kein DataGridViewImageColumn. Welchen Namespace brauch man dafür? Ob VB oder C# macht da keinen Unterschied. DataGridViewImageColumn-Klasse (System.Windows.Forms)
Sarene Geschrieben 24. Oktober 2008 Autor Geschrieben 24. Oktober 2008 Für nen Anfänger ist das erstmal verwirrend ;-) Den Namespace System.Windows.Forms habe ich schon versucht einzubinden, aber er kann irgendwie nicht gefunden werden. Ich bin auch im CodeBehind von ASPX..vielleicht liegts daran^^
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden