DataGridview Spalten Header und Breite

werner_sg

Erfahrenes Mitglied
Guten Morgen ich versuche den Header Text und die Breite eines Datagrid für jede Zelle einzeln festzulegen.

Alles was ich bisher dazu finden konnte bezieht sich auf die Einstellungen über die Toolbox, die Anleitung von Microsoft hilft auch nicht wirklich weiter und wirft Fehler auf.

C#:
   // Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[3].Name = "Rating";

Mein Code für das Datagrid im Designer ist wie folgt aufgebaut
in der vb Datei dazu ist nur eine Cellclick Anweisung mit eingebaut

C#:
        '
        'DataGridView1 Kundendaten aus Access
        '
        Me.DataGridView1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                    Or System.Windows.Forms.AnchorStyles.Left) _
                    Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
        'Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
        Me.DataGridView1.Location = New System.Drawing.Point(12, 380)
        Me.DataGridView1.Name = "DataGridView1"
        Me.DataGridView1.ReadOnly = True
        Me.DataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
        Me.DataGridView1.Size = New System.Drawing.Size(1476, 200)
        Me.DataGridView1.TabIndex = 21

Wenn ich den Beispielcode von Microsoft anpasse und bei mir einbaue gibt es nur Fehler, wer weis woran es liegt.

Hab mir hier auch mal die anderen Fragen dazu angesehen, bei welchen aber nirgends eine Antwort zu finden war, so schwer sollte das doch eigentlich auch nicht unbedingt sein, Oder?

Werner
 
Hallo Werner,

dann wie beim Namen nur für die Breite.
C#:
// Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[0].Width = 100;
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[1].Width = 150;
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[2].Width = 100;
    dataGridView1.Columns[3].Name = "Rating";
    dataGridView1.Columns[3].Width = 1200;
Quelle: DataGridViewColumn.Width Eigenschaft (System.Windows.Forms)
 
Hallo Werner,

dann wie beim Namen nur für die Breite.
C#:
// Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[0].Width = 100;
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[1].Width = 150;
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[2].Width = 100;
    dataGridView1.Columns[3].Name = "Rating";
    dataGridView1.Columns[3].Width = 1200;
Quelle: DataGridViewColumn.Width Eigenschaft (System.Windows.Forms)
theoretisch ja, praktisch funktioniert das ja nicht

der erste Code Block von mir ist ja das Microsoft Muster

meiner ist der zweite Block, wenn ich dort das Muster angepasst einbaue markiert er die Zeile dann als Fehler

wo und wie muss ich das einbauen
 
was für ein Fehler (bitte immer Fehlertext mit angeben)?
(und zeig deine Anpassung dazu)

hast du es eins zu eins reinkopiert?
denn du musst z.B. natürlich die Namen der Steuerelemente die du verwendest entsprechend setzen

achtung du scheint auch in der designer.vb änderungen vornehmen zu wollen (dein Quellcodeausschnitt erinnert so danach).
da wirklich nur was ändern wenn du weißt was du tust, dort kommt nämlich das über WinForms generierte Code hin

und falls du mit DatenBindung arbeitest, auf die Eigenschaft AutoGenerateColumns achten (ev. dies ausschalten) könnte sonst ev. deine Einstellungen (quasi) verwerfen.
 
Zuletzt bearbeitet:
was für ein Fehler (bitte immer Fehlertext mit angeben)?
(und zeig deine Anpassung dazu)

hast du es eins zu eins reinkopiert?
denn du musst z.B. natürlich die Namen der Steuerelemente die du verwendest entsprechend setzen

achtung du scheint auch in der designer.vb änderungen vornehmen zu wollen (dein Quellcodeausschnitt erinnert so danach).
da wirklich nur was ändern wenn du weißt was du tust, dort kommt nämlich das über WinForms generierte Code hin

und falls du mit DatenBindung arbeitest, auf die Eigenschaft AutoGenerateColumns achten (ev. dies ausschalten) könnte sonst ev. deine Einstellungen (quasi) verwerfen.
Hi Spyke

Anpassen an DataGridview1 ist klar

ich hatte es auf verschiedenen Wegen probiert

1. das Public Void in die vb eingebunden selbstverständlich mit angepassten Namen, es wird sofort alles rot unterstrichen

2. die Zeile DataGridView1.Columns[0].Name = "Recipe"; in das vorhandene Private Sub customers_load mit eingebunden
hierbei erhalte ich auch nur eine rot unterstrichene Zeile

3. die obige Zeile in den Designer Block des Datagrid eingefügt ebenfalls nur eine als fehler unterstrichene Zeile

In dem Projekt arbeite ich jetzt erstmals komplet mit Code also auch der Designer Inhalt wird nicht automatisch erstellt, klappt eigentlich ganz gut bis auf so kleine stolpersteine.

Leider sind alle Tutorials und Anleitungen nur für die Erstellung über die Toolbox zu finden, der Weg ist mir ja bekannt und auch sehr einfach, nur habe die option jetzt nicht.

Deinem Hinweis ist aber schon mal zu entnehmen das es auf jeden Fall in der vb erfolgen sollte.

Nur wie das es auch beim starten dann ausgeführt wird und nicht erst auf einen Button Click und auch nicht mehr als Fehler gekennzeichnet wird

Danke Werner
 
wenn du mit der maus über das rote gehst, was für ein fehler erscheint im Tooltip und/oder was für Fehler stehen im Error (Fehler) Fenster?

Pack auch mal ein Screenshot vom Code rein wies bei dir ausschaut.
 
Zurück