2015-06-11 5 views
5

Lange Rede, kurzer Sinn, ich habe dieses dataGridView und ich möchte, dass die Zelle [0,0] die Zelle in der unteren linken Ecke des Gitters ist, nicht wie oben standardmäßig auf der linken oberen Ecke des Gitters.Windows Form: ändern dataGridView die erste Zelle Herkunft?

Zum Beispiel visuell, wenn ich so etwas wie:

dataGridView1[0, 0].Value = "a"; 

I get this (sorry not enough reputation to post pictures)

aber ich würde gerne „a“ angezeigt werden soll, durch den gleichen Befehl zu tun, um die blauen Steckplatz hervorgehoben, und indem man Dinge wie das Hinzufügen einer Zeile tut, würde es oben auf dem Gitter hinzugefügt werden.

Vielen Dank im Voraus und in Bezug auf

+0

verwendet werden Klingt wie ein nicht-sehr-gut durchdachte Idee. Wenn Sie an der Vorderseite hinzufügen möchten, tun Sie einfach einen Einfügen! – TaW

Antwort

4

Erstellen Sie eine Klasse wie folgt:

public class MyDataGridView : DataGridView 
{ 
    public new DataGridViewCell this[int col, int invertRow] 
    { 
     get 
     { 
      int recordCount = this.RowCount - (this.AllowUserToAddRows ? 2 : 1); 
      return this.Rows[recordCount - invertRow].Cells[col]; 
     } 
     set 
     { 
      int recordCount = this.RowCount - (this.AllowUserToAddRows ? 2 : 1); 
      this.Rows[recordCount - invertRow].Cells[col] = value; 
     } 
    } 
} 

und nennen das wie folgt aus:

dataGridView1[0, 0].Value = "a"; 

oder wenn Sie einstellen wollen oder erste Zelle erhalten in oben links vom Gitter nur dann können Sie FirstDisplayedCell Eigenschaft verwenden.

MSDN: Ruft die erste Zelle ab, die derzeit in der DataGridView angezeigt wird, oder legt diese fest; In der Regel befindet sich diese Zelle in der oberen linken Ecke.

Zum Beispiel:

dataGridView1.FirstDisplayedCell.Value = "a"; 
+0

Tauschen Sie die Zeilen- und Spaltenindizes aus ... – helrich

+0

Oh mein Gott, entschuldigen Sie, ich denke, er will einen Index holen! Ich habe behoben, sobald – Behzad

+0

ich durch Invertierung Zeilenindex behoben. – Behzad

4

Es gibt keine native Möglichkeit, was man ohne Verlängerung der Klasse zu tun wollen, aber Sie können Erweiterungsmethoden verwenden, die den Zeilenindex für Sie invertieren:

public static DataGridViewCell FromLowerLeft(this DataGridView dgv, int columnIndex, int invertedRowIndex) 
{ 
    return dgv[columnIndex, dgv.RowCount - invertedRowIndex]; 
} 

Dies kann als

dataGridView.FromLowerLeft(0,0).Value = "a"; 
Verwandte Themen