Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  VB.NET 2005: DataGridView

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  VB.NET 2005: DataGridView (18631 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 26. Apr. 2007 14:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


DataGridView.gif

 
Hallo Experten,
ich hab da mal wieder ein Problem:
Ich benötige in einer Form ein DataGridView-Control, das NICHT mit irgendeiner Datenquelle verbunden ist, ich möchte das zur Laufzeit mit Daten füllen.
Aus den verschiedenen Hilfe-Beiträgen zum Thema DataGridview werde ich beim besten Willen nicht schlau. Das beste Beispiel, das ich bisher gefunden habe, sieht etwa so aus:
Erst werden die String-Arrays für die einzelnen Zeilen deklariert und dabei gleich mit Werten gefüllt:
    Dim row0 As String() = {"11/22/1968", "29", "Revolution 9", "Beatles", "The Beatles [White Album]"}
    Dim row1 As String() = {"4/4/1960", "6", "Fools Rush In", "Frank Sinatra", "Nice 'N' Easy"}
...

Dann werden diese in die DataGridView geschrieben:
    With Me.dataGridView1.Rows
        .Add(row0)
        .Add(row1)
...
    End With

Meine Problem dabei:
1. meine Daten werden erst zur Laufzeit ermittelt, wie kriege ich die in eine Variable, die mit
    dim row1= string()
deklariert wurde?
2. Eine Spalte ist vom Typ Bitmap, sie soll .bmp-Icons anzeigen. Wie bekomme ich die da hinein?

Bitte bitte, sagt mir, dass das ganz leicht ist!

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 27. Apr. 2007 07:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Guten Morgen Klaus,

ich persönlich befülle ein DataGridView über zuvor definierte Objekte.
Ich habe dir mal einen Codeschnipsel aus SDA-QuickPrint angehängt. In dieser Anwendung gibt es ein Formular, in welchem der User in einem DataGridView seine Druckereinstellungen festlegt.
Ich schätze, dass dir dieses kleine Beispiel als Experte weiter helfen wird.

Code:

    Private Function ReihenHinzufuegen() As Boolean
        Try
            Dim oReihe As DataGridViewRow
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A4 Hochformat"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A4 Querformat"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A3"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A2"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A1"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            oReihe = New DataGridViewRow
            oReihe.HeaderCell.Value = "DIN A0"
            oReihe.HeaderCell.Style.Alignment = _
                    DataGridViewContentAlignment.MiddleLeft
            oReihe.Frozen = True
            Me.dgvDrucker.Rows.Add(oReihe)
            Return True
        Catch ex As Exception
            Debug.Assert(False)
            Trace.WriteLineIf(True, _
                "Fehler: Wo: " & ex.StackTrace & " Was: " & ex.Message)
            Return False
        End Try
    End Function

    Private Function DruckerInsDgvComEinfuegen() As Boolean
        Try
            Dim oComDgvDrucker As DataGridViewComboBoxCell
            Dim oComDgvOrientierung As DataGridViewComboBoxCell
            Dim sOrientierungArray() As String = {"Hoch", "Quer"}
            For iFormate As Integer = 0 To Me.dgvDrucker.Rows.Count - 1
                oComDgvDrucker = CType(Me.dgvDrucker.Rows(iFormate).Cells(0), _
                        DataGridViewComboBoxCell)
                oComDgvOrientierung = CType(Me.dgvDrucker.Rows(iFormate).Cells(2), _
                        DataGridViewComboBoxCell)
                oComDgvDrucker.Items.AddRange(sDruckerNamenFrm)
                oComDgvOrientierung.Items.AddRange(sOrientierungArray)
            Next
            Return True
        Catch ex As Exception
            Debug.Assert(False)
            Trace.WriteLineIf(True, _
                "Fehler: Wo: " & ex.StackTrace & " Was: " & ex.Message)
            Return False
        End Try
    End Function


Wie man allerdings ein Bitmap in das DataGridView bekommt weis ich leider auch nicht. Es gibt verschiedene DataGridViewCell Objekte wie das in meinem Beispiel (DataGridViewComboBoxCell). Dieses Steht für eine ComboBox im DataGridView. Es gibt dort noch mehr, aber ob es auch eine PictureBox im DataGridView gibt? Glaube ich kaum.

Grüße und schönes, hoffentlich verlängertes Wochenende!

------------------
Mfg Daniel

Lesen ist super. Nur die Buchstaben machen einen verrückt!
------------------

SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 27. Apr. 2007 08:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von tbd:
...als Experte....
He he danke für die Blumen, aber wir wollen mal auf dem Boden bleiben 

Ich kann jetzt nicht behaupten, dass ich den Code auf Anhieb begriffen habe, aber ich arbeite daran.

Zitat:
... Es gibt dort noch mehr, aber ob es auch eine PictureBox im DataGridView gibt? Glaube ich kaum.
Doch, gibt es (sie Abbildung oben). Der Clumn-Type heißt dann "DataGridViewImageColumn". Aber wie befüllen...???
Ah ja, vergessen: ich werkel da mit vb.net 2005 Express herum, obs das so z.B. auch schon in vb.net 2003 gibt, weiß ich nicht.

Und das mit dem langen Wochenende wird nix, den Tag Urlaub spar ich mir.
Danke und Ciao 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 27. Apr. 2007 08:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KMassler:
He he danke für die Blumen, aber wir wollen mal auf dem Boden bleiben 

Scheint aber doch so zu sein! Du hast dir die Antwort ja fast selbst gegeben.
Die Bitmapzelle wird durch das DataGridView Objekt DataGridViewImageCell festgelegt.
Ich schätze mal das die Property Value das Bild festlegt.
Um also ein Bitmap in die Zelle zu bekommen könntest du evtl. (Habe den Code nicht getestet) so vorgehen:

Code:

'Zelle der Spalte 4 in Zeile 1
BitmapZelle = CType(DataGridView.Item(3, 0), DataGridViewImageCell)
BitmapZelle.Value = ...

Ja das DataGridView ist so mächtig das man darüber wahrscheinlich ein eigenes Buch lesen muss um es wirklich und vollstädig zu verstehen!

------------------
Mfg Daniel

Lesen ist super. Nur die Buchstaben machen einen verrückt!
------------------

SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 27. Apr. 2007 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Na, ob das LEsen des Buchs bei mir reichen würde, um das zu verstehen...

Mein DataGrid kann ich jetzt schon mal füllen (erst mal nur Text  , die Bitmap tu ich mir erst später an) und auch auslesen, aber:

Wo finde ich den Index einer ausgewählten Zeile? Ich finde das einfach nicht.

Und die Microsoft-Hilfe mit dem Verweis-Dschungel macht mich wahnsinnig!

[Edit]
Habs!!
Ist ja so easy, wenn mans weiß!
Ind = DataGridView.CurrentCell.RowIndex
[/Edit]
------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 27. Apr. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 27. Apr. 2007 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Mahlzeit Klaus,

Nicht aufgeben!
Die Eigenschaft Rows stellt eine Zeilencollection.
Diese kannst du wie jede Collection behandeln, also mit Hilfe einer For Each Schleife alle vorhandenen Zeilen abarbeiten oder durch Iten(x) die Zeile direkt ansprechen.

Hier mal ein bisschen Beispielcode zur Verdeutlichung:

Code:

Dim DataGridViewRow As DataGridViewRow
For Each DataGridViewRow In DataGridView.Rows
  'z.B. richtige Zeile durch den Index filtern
  If DataGridViewRow.Index = x Then
      ...
  End If
Next
'Index direkt anprechen
DataGridViewRow = DataGridView.Rows.Item(x)

Bei den Spalten ist die Vorgehensweise die gleiche. Anstelle der Rows Property verwendet man hier natürlich die Columns Property

Ups vergessen!
Ausgewählte Zeilen findest du in der SelectedRows Property.

Code:
'Maktrierte Zeilen
DataGridView.SelectedRows


------------------
Mfg Daniel

Lesen ist super. Nur die Buchstaben machen einen verrückt!
------------------

SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 27. Apr. 2007 13:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke danke.. das mit dem Index hab ich im Prinzip schon begriffen .. aber ..naja..

DataGridView.SelectedRows gibt mir aber nicht den Index der Zeile, aber das Problem hab ich ja schon gelöst (s.o.).

Aber weiter gehts:

ich würde gerne einzelne Zeilen verschieben..nach oben, nach unten...egal.
Dazu wollte ich DataGridView.Rows.InsertCopy(QuellIndex, ZielIndex), um erst mal eine Kopie der Zeile an der neuen Stelle zu erzeugen, und dann die alte Zeile mit DataGridView.Rows.Remove(index) entfernen.
Das Entfernen geht  , er fügt mir bei dem InsertCopy auch eine Zeile an der richtigen Stelle ein..nur ist die immer leer..

Aber wie auch immer...ich mach jetzt erst mal Wochenende und beschäftige mich am Montag wieder damit. Vielleicht gehts dann ja, wer weiß.

Auf jeden Fall vielen Dank für die Geduld 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
privat:
ab 2024 Onshape
seit 2025 SolidWorks for Makers

erstellt am: 03. Mai. 2007 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nach langem hin und her hab ich zumindest geschafft, dass das Rauf- und Runterschieben der Zeilen funktioniert...wenn auch wohl nicht so, wie sich die Erfinder der DataGridView das gedacht hatten:
Code:
Private Sub btnDn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDn.Click
        'Eintrag eine Zeile nach unten verschieben
        Dim sDGVRow() As Object = {Nothing, "", "", "", "", ""}
        Dim n As Integer
        Dim Ind As Integer

        Ind = DataGridView.CurrentCell.RowIndex
        If Ind = DataGridView.Rows.Count - 1 Then Exit Sub

        'sDGVRow füllen
        For n = 1 To UBound(sDGVRow)
            sDGVRow(n) = DataGridView.Rows(Ind).Cells(n).Value
        Next

        DataGridView.Rows.Insert(Ind + 2, sDGVRow)

        DataGridView.Rows.Remove(DataGridView.Rows(Ind))
        'Zeile wieder selektieren:
        DataGridView.CurrentCell = DataGridView.Rows(Ind + 1).Cells(1)
End Sub



In dem Beispiel wird die aktuell gewählte Zeile und eine Zeile nach unten geschoben, das Schieben nach oben, an den Anfang und ans Ende funktioniert analog.
Ich verstehe aber trotzdem nicht, warum das .InsertCopy nur leere Zeilen erzeugt, das ist ja wohl nicht im Sinne der Erfinder.
Naja, das soll mir so genügen, sind halt ein paar Zeilen mehr als nötig.

Die erste Spalte bleibt bei mir vorerst auf "Nothing", bis ich wieder Zeit genug habe, mich damit zu befassen, wie ich da meine Bitmaps rein  bekomme.
Da werde ich mich bestimmt wieder hier voller Verzweiflung melden 

Bis dahin vielen Dank
und Ciao

------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 03. Mai. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pogoist
Mitglied


Sehen Sie sich das Profil von pogoist an!   Senden Sie eine Private Message an pogoist  Schreiben Sie einen Gästebucheintrag für pogoist

Beiträge: 1
Registriert: 23.05.2007

erstellt am: 23. Mai. 2007 15:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo Klaus,

ich hab das selbe Problem mit dem Zeilen verschieben.  Bilder darstellen funktioniert aber so:

Wenn du ein ungebundenes Datagrid nimmst, musst du als Datentyp für die Spalte wo das Bild rein soll "DataGridViewImagecColumn" nehmen.
Bei einem gebundenen muss der Datentyp der Spalte des Datasource Drawing.Bitmap sein.

hier ein Beispiel Code, die Bilder sind im VB in den Resourcen eingebettet:

Dim imglist As New ImageList
        Dim column_edit As DataGridViewColumn = DataGridView1.Columns("Bildspalte")

        imglist.Images.Add("Bild1", My.Resources.bild1)
' Hier kannst du mehrere Bilder hinzufügen
'imglist.Images.Add("Bild2", My.Resources.bild2)

        imglist.ImageSize = New System.Drawing.Size(14, 14)
        imglist.TransparentColor = Color.Transparent
        imglist.ColorDepth = ColorDepth.Depth32Bit


            Dim img As Image = imglist.Images("bild1")
            DataGridView1.Rows(index).Cells().Item(2).Value = img


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
privat:
ab 2024 Onshape
seit 2025 SolidWorks for Makers

erstellt am: 05. Sep. 2007 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

lang lang ists her...

Und wenn ich die Bilder nicht als Ressource habe, sondern zur Laufzeit von der Platte laden und darstellen will/muss ?

Gruß

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 05. Sep. 2007 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Guten Morgen Klaus,

du kannst dir ein Image Objekt auch durch eine Datei oder einen Stream befüllen.
Wenn ich mir den Beitrag auf die Schnelle richtig durchgelesen habe, ist es ungefähr das was du suchst:

Code:

Dim oImglist As New ImageList
Dim oImage As System.Drawing.Image
oImage = System.Drawing.Image.FromFile("D:\bda\Eigene Bilder\Beispiel.bmp")
oImglist.Images.Add(oImage)

Ich hoffe das ich dich richtig verstanden habe und dir helfen konnte!

------------------
Mfg Daniel

Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht
------------------
VBasic / vb.net / vbs / wsh | Freeware

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 05. Sep. 2007 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke danke!

Jetzt hab ichs auch (fast) selber geschafft  Was doch so ne monatelange Pause bewirken kann 

So siehts aus:

Code:

    Function ReadFile()
        Dim sDGVRow() As Object = {Nothing, "", "", "", "", ""}
        Dim PictureName As String
        Dim Pic As Bitmap
        Dim strDummy As String
        Dim Record() As String
        Dim n As Byte
        Dim Pos As Integer
        Dim fStream As FileStream

        Try
            fStream = New FileStream(Me.TextBox1.Text, _
                            FileMode.Open, FileAccess.Read, _
                            FileShare.Read)
        Catch
            Return False
        End Try

        Dim sReader As New StreamReader(fStream, _
            Encoding.GetEncoding("iso8859-1"))

        DataGridView.Rows.Clear()

        Do Until sReader.Peek = -1
            For n = 1 To UBound(sDGVRow)
                'RowObject-Array mit leeren Inhalten vorbelegen
                sDGVRow(n) = ""
            Next n
            sDGVRow(0) = Nothing

            'Zeilenweise auslesen:
            strDummy = sReader.ReadLine

            If Microsoft.VisualBasic.Left(strDummy, 1) <> "#" _
                And Trim(strDummy) <> "" Then
                'Zeile ist kein Kommentar und nicht leer, also verwenden:
                  ' ... ist gültige Menüzeile
                    Record = Split(strDummy, "|")
 
                    'den erhaltenen Record umsetzen in das Row-Array,
                    'ist nötig, da das object-Array sDGVRow ein zusätzliches Bildobjekt enthält
                    For n = 0 To UBound(Record)
                        If n < UBound(sDGVRow) Then
                            sDGVRow(n + 1) = Record(n)

    'Und nun noch den Dateinamen für das Bild auswerten und Bild einfügen:
                            If n = 2 Then
                                'Record(2) enthält den Bildnamen
                                PictureName = Record(n)
'...
                                If PictureName <> "" Then
                                    'Bildname angegeben...
                                    'ist Bild vorhanden?
                                    Try
                                        Pic = New Bitmap(PictureName)
                                        sDGVRow(0) = Pic                                   
                                    Catch
                                        'Fehler aufgetreten, Bilddatei vielleicht nicht da?
                                    End Try
                                End If
                        End If
                    Next
    'sDGVRow ist fertig befüllt,
                    'sDGVRow-Object zum DataGridView hinzufügen
                    DataGridView.Rows.Add(sDGVRow)
                End If
            End If
        Loop

        sReader.Close()
        fStream.Close()
        Return True
    End Function


Könnte vielleicht noch verbessert und vereinfacht werden, aber es klappt.

Und jetzt muss ich mich noch darum kümmern, dass das Bild ausgetauscht wird, wenn das entsprechende Feld in der DataGridView editiert wurde, das den Dateinamen enthält. Aber das pack ich auch noch irgendwann 

Gruß und danke


------------------
Klaus

    www.al-ko.com | mein Gästebuch | privat...

[Diese Nachricht wurde von KMassler am 05. Sep. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz