MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Visual Studio /.NET > Visual Studio .NET (alle Produkte: C#, VB.NET etc.)
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 05.07.2018, 14:19   #1
chbahn
MOF User
MOF User
Standard VB - Collection aus Klasse in einem DataGridView anzeigen und aktualisieren

Hallo,
da ich noch nicht lange mit VB .net zu tun habe und ich wohl noch zuviel vba denke, komme ich mit meinem Problem nicht weiter!
In dem beigefügten Beispielprogramm, hoffe ich, kann man mein Problem hoffentlich schnell verstehen.
Mein Beispiel
In meinem Beispiel habe ich eine Klasse Table und eine weitere Klasse mit dem Namen Field.
Über die Klasse Table kann ich neue Felder dem Table hinzufügen. Diese werden dort in der Klasse Table in einer Collection gespeichert. Diese Collection übergebe ich als Datasource an das DataGridView.
Wenn schon Felder angelegt sind, werden diese auch angezeigt! Füge ich später aber noch welche hinzu, oder ändere Werte, werden diese nicht angezeigt! Was mus ich machen, damit das aber funktioniert! Refresh und Update brachten keine Besserung!
Starte ich mein Testprogramm und drücke auf die Ändern Schaltfläche, so werden die Daten direkt geändert. Vergrößere ich aber zu erst die Spalte um die Änderung direkt zu sehen, wird der Wert nicht geändert!
Über jede Hilfe bin ich dankbar!
Hier der Code und im Anhang mein Testprojekt!
Code:

Public Class Form1
    Dim objTable As New Table
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With objTable
            .TableName = "Test"
            .TableDescription = "Testtabelle"
            .FieldAdd("Nachname", "Der Nachname, vor der Änderung")
        End With
        DataGridView1.DataSource = objTable.Fields
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim objField As New Table.Field
        With objField
            .FieldName = "Vorname"
            .FieldDescritpion = "Der Vorname"
        End With
        objTable.FieldAdd(objField)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        objTable.FieldChange("Nachname", "Der Nachname nach der Änderung!")
    End Sub
End Class

Public Class Table
    Public Property TableName As String
    Public Property TableDescription As String
    Public Property Fields As New Collection

    Public Sub FieldAdd(FieldName As String, Description As String)
        Dim objField As New Table.Field
        With objField
            .FieldName = FieldName
            .FieldDescritpion = Description
        End With
        Fields.Add(objField, objField.FieldName)
    End Sub

    Public Sub FieldAdd(Field As Table.Field)
        Fields.Add(Field, Field.FieldName)
    End Sub

    Public Function FieldGet(Fieldname As String) As Table.Field
        Return Fields(Fieldname)
    End Function

    Public Function FieldGet(Index As Integer) As Table.Field
        Return Fields(Index)
    End Function

    Public Sub FieldChange(Fieldname As String, Field As Table.Field)
        Dim objField As Table.Field = Fields.Item(Fieldname)
        objField = Field
    End Sub

    Public Sub FieldChange(Fieldname As String, Description As String)
        Dim objField As New Table.Field
        objField = Fields.Item(Fieldname)
        objField.FieldDescritpion = Description
    End Sub

    Public Class Field
        Public Property FieldName As String
        Public Property FieldDescritpion As String
    End Class
End Class
Die Form:
Code:

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form

    'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Wird vom Windows Form-Designer benötigt.
    Private components As System.ComponentModel.IContainer

    'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    'Das Bearbeiten ist mit dem Windows Form-Designer möglich.  
    'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.DataGridView1 = New System.Windows.Forms.DataGridView()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.Button2 = New System.Windows.Forms.Button()
        CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'DataGridView1
        '
        Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
        Me.DataGridView1.Location = New System.Drawing.Point(12, 12)
        Me.DataGridView1.Name = "DataGridView1"
        Me.DataGridView1.Size = New System.Drawing.Size(776, 150)
        Me.DataGridView1.TabIndex = 0
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(12, 229)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(75, 23)
        Me.Button1.TabIndex = 1
        Me.Button1.Text = "Füge Wert hinzu"
        Me.Button1.UseVisualStyleBackColor = True
        '
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(106, 229)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(130, 23)
        Me.Button2.TabIndex = 2
        Me.Button2.Text = "Ändere Wert Index 1"
        Me.Button2.UseVisualStyleBackColor = True
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(800, 266)
        Me.Controls.Add(Me.Button2)
        Me.Controls.Add(Me.Button1)
        Me.Controls.Add(Me.DataGridView1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

    Friend WithEvents DataGridView1 As DataGridView
    Friend WithEvents Button1 As Button
    Friend WithEvents Button2 As Button
End Class
Angehängte Dateien
Dateityp: zip DatagridTest.zip (118,6 KB, 0x aufgerufen)

__________________

"Programmers never die, they just GOSUB without RETURN"

Geändert von chbahn (05.07.2018 um 15:59 Uhr). Grund: Falscher Code
chbahn ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.