2015-06-11 51 views
5

Krótko mówiąc, mam to daneGridView i chcę, aby komórka [0,0] była komórką w lewym dolnym rogu siatki, a nie w lewym górnym rogu siatki, tak jak to robi domyślnie.Windows Form: zmiana pierwszego pochodzenia komórki dataGridView?

Na przykład wizualnie, jeśli mogę zrobić coś takiego:

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

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

ale chcę "a" do stawienia się, wykonując tę ​​samą dyspozycję, na niebiesko podświetlone gniazdo, i wykonując takie rzeczy jak dodanie wiersza, zostanie on dodany na górze siatki.

Wiele z góry dzięki i pozdrawiam

+0

Brzmi niezbyt dobrze przemyślana pomysł. Jeśli chcesz dodać z przodu, po prostu włóż Wstaw! – TaW

Odpowiedz

4

Tworzenie jedną klasę tak:

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; 
     } 
    } 
} 

i nazwać tak:

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

lub jeśli chcesz ustawić lub dostać pierwszą komórkę w w lewym górnym rogu siatki możesz wtedy użyć właściwości FirstDisplayedCell.

MSDN: Pobiera lub ustawia pierwszą komórkę aktualnie wyświetlaną w DataGridView; zazwyczaj ta komórka znajduje się w lewym górnym rogu.

Na przykład:

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

Wszystko co robisz, to zamiana indeksów wierszy i kolumn ... – helrich

+0

O mój Boże, wybacz, myślę, że chce pobrać dowolny indeks! naprawiłem to wkrótce – Behzad

+0

Naprawiłem przez odwrócenie indeksu wiersza. – Behzad

4

Nie ma natywny sposób, aby robić to, co chcesz, bez rozszerzania klasy, ale można użyć metody rozszerzenie że odwróci indeks wiersza dla Ciebie:

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

ten może być stosowany jako

dataGridView.FromLowerLeft(0,0).Value = "a"; 
Powiązane problemy