![]() |
|
|
Banner und Co. |
![]() |
Ads |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
![]() MOF User |
![]() 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 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 __________________ "Programmers never die, they just GOSUB without RETURN"Geändert von chbahn (05.07.2018 um 15:59 Uhr). Grund: Falscher Code |
![]() |
![]() ![]() |