Laden...

DataGridView spaltenweise initialisieren

Erstellt von kstanger vor einem Jahr Letzter Beitrag vor einem Jahr 747 Views
K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr
DataGridView spaltenweise initialisieren

Hallo,
ich möchte ein DataGridView (DGV) spaltenweise initialisieren. Dazu habe ich ein DGV DataGridViewTiming im Designer leer ohne Bindung erstellt.
In der Methode Form1 lege ich die einzelnen Spalten fest:


            DataGridViewTextBoxColumn dgvTextUhrzeit = new DataGridViewTextBoxColumn();
            //dgvTextUhrzeit.DataSource = BindingSourceTiming;      // das funktioniert nicht - hier weiß ich nicht, wie ich die Spalte an eine BindingSource anbinden soll
            dgvTextUhrzeit.HeaderText = "Uhrzeit";
            dgvTextUhrzeit.DataPropertyName = "Uhrzeit";
            DataGridViewTiming.Columns.Add(dgvTextUhrzeit);

            DataGridViewComboBoxColumn dgvComboTyp = new DataGridViewComboBoxColumn();
            dgvComboTyp.DataSource = BindingSourceTiming;
            dgvComboTyp.HeaderText = "Lichtquelle";
            dgvComboTyp.DataPropertyName = "Typ";
            dgvComboTyp.DisplayMember = "Typ";
            dgvComboTyp.ValueMember = "Typ";
            DataGridViewTiming.Columns.Add(dgvComboTyp);

            DataGridViewComboBoxColumn dgvComboNummer = new DataGridViewComboBoxColumn();
            dgvComboNummer.DataSource = BindingSourceTiming;
            dgvComboNummer.HeaderText = "Nr.";
            dgvComboNummer.DataPropertyName = "Nummer";
            dgvComboTyp.DisplayMember = "Nummer";
            dgvComboTyp.ValueMember = "Nummer";
            DataGridViewTiming.Columns.Add(dgvComboNummer);

            DataGridViewComboBoxColumn dgvComboBeschreibung = new DataGridViewComboBoxColumn();
            dgvComboBeschreibung.DataSource = BindingSourceTiming;
            dgvComboBeschreibung.HeaderText = "Beschreibung";
            dgvComboBeschreibung.DataPropertyName = "Beschreibung";
            dgvComboBeschreibung.DisplayMember = "Beschreibung";
            dgvComboBeschreibung.ValueMember = "Nummer";
            DataGridViewTiming.Columns.Add(dgvComboBeschreibung);

            DataGridViewComboBoxColumn dgvComboZustand = new DataGridViewComboBoxColumn();
            dgvComboZustand.DataSource = BindingSourceTiming;
            dgvComboZustand.HeaderText = "Zustand";
            dgvComboZustand.DataPropertyName = "Zustand";
            DataGridViewTiming.Columns.Add(dgvComboZustand);

Mein Objekt hat u.a. folgenden Inhalt:


        public string Uhrzeit { get; set; }
        public Lichtquelle Typ { get; set; }
        public int Nummer { get; set; }
        public string Beschreibung { get; set; }
        public BZustand Zustand { get; set; }

Dabei sind Lichtquelle und BZustand


   public enum Lichtquelle
    {
        Led,
        Relais
    };

    public enum BZustand
    {
        ein,
        aus
    };


In Form1_Load lade ich die Liste der Objekte (Timings = List<Timing>) und lege die Bindung der BindingSource an das Objekt fest.


            Timings = inOut.ReadTiming(Timings, Presettings);    // diese Methode funktioniert richtig, habe sie aber hier nicht dargestellt
            BindingSourceTiming.DataSource = Timings;

Im DGV werden die Werte nicht angezeigt. Was ist falsch?

Karl Stanger