Hallo,da ich noch nicht lange mit VB .net zu tun habe und ich wohl noch zu viel vba denke, komme ich mit meinem Problem nicht weiter!
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 ich Werte, werden diese nicht angezeigt! Was muss 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. Klicke ich aber zuerst auf das DataGridView, wird der Wert geändert, aber nicht angezeigt!
Über jede Hilfe bin ich dankbar!
Hier der Code und im Anhang mein Testprojekt!
Die Form:
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 ich Werte, werden diese nicht angezeigt! Was muss 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. Klicke ich aber zuerst auf das DataGridView, wird der Wert geändert, aber nicht angezeigt!
Über jede Hilfe bin ich dankbar!
Hier der Code und im Anhang mein Testprojekt!
VB.NET-Quellcode
- 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) = Field
- End Sub
- Public Sub FieldChange(Fieldname As String, Description As String)
- Dim objField As Table.Field = 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:
VB.NET-Quellcode
- <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