3 Stimmen

Wie man Enums in C# anstelle des Spaltenindex verwendet

Ich versuche, Enum als Index für eine Datagridview-Spalte zu verwenden, aber es hat nicht funktioniert

Meine Enums

enum _EnmDgvCol
    {
        SrNo,
        Name,
        Qty,
        Rate,
        Amount,
    }

und ich versuche es wie folgt:

MydataGridView[_EnmDgvCol.Name, 0].Value = "Einiger Wert";

aber es gibt einen Fehler

Der beste passende überladene Methodenmatch für 'System.Windows.Forms.DataGridView.this[int, int]' hat einige ungültige Argumente

Wenn ich den folgenden Code verwende, funktioniert es

MydataGridView[1, 0].Value = "Einiger Wert";

Meine Frage ist, wie man Enums anstelle des Spaltenindexes verwendet

5voto

Adil Punkte 143047

Typisieren Sie den enum-Wert auf int, zum Beispiel haben Sie _EnmDgvColInstance mit dem Wert _EnmDgvCol.Name

_EnmDgvCol _EnmDgvColInstance = _EnmDgvCol.Name;
MydataGridView[(int)_EnmDgvColInstance, 0].Value = "Einige Wert";

Oder einfach

MydataGridView[(int)_EnmDgvCol.Name, 0].Value = "Einige Wert";

2voto

Ehsan Punkte 30745

Ich würde Ihren Code leicht modifizieren (nur für die Lesbarkeit)

enum _EnmDgvCol : int
    {
        SrNo = 0 ,
        Name= 1,
        Qty= 2,
        Rate= 3,
        Amount= 4,
    }

und so verwenden

MydataGridView[(int))_EnmDgvCol.Name, 0].Value = "Einige Wert";

2voto

Fabio Punkte 30217

Ich verstehe, dass die Frage beantwortet und bereits akzeptiert ist. Aber...

Sie verwenden Enum, um Spaltenindizes im Speicher zu halten und dem Code mehr Lesbarkeit zu verleihen.

Warum benötigen Sie Enums dafür, wenn Sie bereits Spaltobjekte initialisiert haben?
Jede Spalte in DataGridView hat die Eigenschaft Name (Sie können diese z.B. im Designer festlegen)

Geben Sie den Spalten einfach denselben Namen wie die Werte der Enum und Sie können diese verwenden:

this.MyDataGridView.Rows[0].Cells[this.SrNo.Name].Value

// oder den Index der Spalte abrufen

this.MyDataGridView[this.SrNo.Index, 0].Value

Sie benötigen also kein weiteres Enum und müssen nicht jedes Mal, wenn Sie MydataGridView[(int)_EnmDgvCol.Name, 0].Value aufrufen, das Enum in ein int umwandeln.

1voto

Neeraj Kumar Gupta Punkte 2097

Diese Codezeile funktioniert auch

MydataGridView[(Int16)_EnmDgvCol.Name, 0].Value = "Einige Wert";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X