Announcement

Collapse
No announcement yet.

DatagridView kopieren ohne Daten und Bindungsfunktionen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DatagridView kopieren ohne Daten und Bindungsfunktionen

    Guten Abend Community

    Ich besitze eine Form mit einer umfangreich gestalteten DatagridView. Die Gestaltung (farblich, neue Column mit anderen Namen etc.) der DGV1 ändert sich immer wieder während der Laufzeit.

    Nun möchte ich die momentane Gestaltung für ein neues DatagridView in eine andere Form während der Laufzeit einkopieren (me.Controls.add(dgv2)), jedoch ohne Daten und ohne Bindungsfunktionen, da in die neue DGV2 andere Daten zur Verfügung stehen. Sobald die Daten nicht mehr gebraucht werden, wird die DGV2 wieder entfernt, damit bei der nächsten Ansicht, wieder genau die gleiche momentane Gestaltung für die Einsicht von der ersten DGV1 übernommen werden kann.

    DGV1 ist im Column-Aufbau eigenständig, d.h. das Dataset bringt nur die Daten. So wird es auch wieder in DGV2 sein.

    Den Befehl "dgv.Copy" gibt es bei mir nicht. Gibt es eventuell einen anderen Befehl oder eine andere Möglichkeit?


    Hier noch den Code, so wie ich das gerne gemacht hätte.

    [highlight=vbnet]
    Public Class Form2
    Private _dgv As DataGridView
    friend withevents dgv2 As New DataGridView
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    Dim ds As DataSet = NewDs()
    Dim bs As New BindingSource

    bs.DataSource = ds
    bs.DataMember = "dt1"


    'Hier solle nur der Design übernommen werden, mit dem momentanen Aufbau der Column
    dgv2 = _dgv '.copy ??
    dgv2.AutoGenerateColumns = False
    dgv2.DataSource = bs

    me.controls.add(dgv2)
    End Sub
    Public Sub New(ByVal dgv As DataGridView)
    MyBase.new()
    InitializeComponent()
    _dgv = New DataGridView
    _dgv = dgv
    End Sub
    End Class
    [/highlight]

    Meinen Dank im Voraus.

    Freundliche Grüsse

    exc-jdbi
    Zuletzt editiert von Christian Marquardt; 14.05.2013, 19:56. Reason: Beiträge zusammengefasst

  • #2
    Wenn du ein Control mit bestimmten Voreinstellungen brauchst würde ich dir empfehlen ein entsprechendes Control abzuleiten und die benötigten Einstellungen dort einzuprogrammieren damit du dann einfach dieses Control bei Bedarf instanziieren kannst. Ein Control zur Laufzeit zu kopieren ist ein Holzweg. Das mit dem ableiten könnte sich bei einem DataGridView sehr komplex darstellen so das sich das nicht wirklich anbietet. Dann würde aber immer noch die Verwendung eines UserControls funktionieren. Einmal das UserControl mit einem DataGridView so designen das es funktioniert und dann dieses Usercontrol bei Bedarf instanziieren.

    Comment


    • #3
      Guten Abend Ralf Jansen

      Danke für die Antwort.

      Deine Möglichkeit habe ich schon in Betracht genommen. Ich bin quasi schon am umändern.
      Ich werde wahrscheinlich nicht darum herum kommen, gewisse Routinen trozdem parallel mit der andern DGV laufen zu lassen.

      Im Netz habe ich etwas gefunden. Es nennt sich Clonen eines DatagridView. Funkst aber leider nicht in Allem so wie ich das gerne möchte. Vielleicht kommt mir noch eine andere Idee.

      Nochmals Danke für die Hilfe

      Freundliche Grüsse

      exc-jdbi

      Comment


      • #4
        Guten Abend

        Hat bestens geklappt.

        Ich habe mir dazu eine Basis-Dgv erstellt, und diese gleich in die Form1 instanziert. Die momentanen Abbild-Informationen des Dgv1's habe ich in eine XML-Datei bzw. Dataset einfliessen lassen. Nach instanzieren einer neuen Basis-Dgv in die Form2, werden die entsprechenden Informationen für die Umgestaltung eingelesen und umgesetzt.

        Nun wird die Dgv2 exakt wiedergegeben wie die Dgv1, mit all ihren Eigenschaften die gebraucht werden.

        Freundliche Grüsse

        exc-jdbi

        Comment

        Working...
        X