2012-03-12 32 views
7

Tôi đang cố gắng di chuyển xuống một DataGrid WPF với mã phía sau. Tôi sử dụngwpf (C#) DataGrid ScrollIntoView - làm cách nào để cuộn đến hàng đầu tiên không được hiển thị?

int itemNum=0; 
    private void Down_Click(object sender, RoutedEventArgs e) 
    { 
     if (itemNum + 1 > dataGridView.Items.Count - 1) return; 
     itemNum+=1; 
     dataGridView.UpdateLayout(); 
     dataGridView.ScrollIntoView(dataGridView.Items[itemNum]); 
    } 

Cuộn xuống chỉ khi mục này hiện không hiển thị.

Ví dụ: Nếu DataGrid đủ dài để giữ 10 hàng và tôi có 20 hàng, tôi cần gọi hàm này 11 lần (cho đến mụcNày là 11) để cuộn đến hàng tiếp theo.

Nó không cuộn xuống nếu hàng đã vừa với lưới (ngay cả khi hàng cuối cùng trên màn hình).

Tôi muốn đạt được điều đó khi tôi gọi phương thức này, lưới sẽ đưa dòng tiếp theo vào đầu lưới (như cuộn tròn). Tại sao nó không hoạt động?

Trả lời

18

Sử dụng DataGridView.FirstDisplayedScrollingRowIndex.

int itemNum=0; 
    private void Down_Click(object sender, RoutedEventArgs e) 
    { 
     itemNum++; 
     if (itemNum > dataGridView.Items.Count - 1) return; 
     //dataGridView.UpdateLayout(); <-- I don't think you need this 
     dataGridView.FirstDisplayedScrollingRowIndex = itemNum; 
    } 

Xin lỗi đã không nhận ra WPF lưới không có điều đó. Điểm về di chuyển vẫn hợp lệ tho. • ScrollIntoView sẽ chỉ cuộn nếu mục đó không ở chế độ xem, và sẽ làm cho nó là hàng cuối cùng nếu nó nằm dưới dòng hiển thị hiện tại, do đó khi bạn cuộn vào để xem mục thứ 11, nó trông giống như nó cuộn đến thứ hai .

Công việc này sẽ hiệu quả với bạn. Bạn cuộn xuống hàng dưới cùng và sau đó cuộn lên đến bất kỳ hàng nào bạn cần. Lưu ý, ở đây bạn thực sự cần cập nhật bố cục hoặc nó sẽ bỏ qua kết quả của cuộn đầu tiên trước khi cuộn lên lần nữa.

 dataGridView.ScrollIntoView(DataGrid1.Items[DataGrid1.Items.Count - 1]); 
     dataGridView.UpdateLayout(); 
     dataGridView.ScrollIntoView(DataGrid1.Items[itemIndex]); 
+2

Im xin lỗi nhưng đây là một DataGrid trong WPF, một số người đàn ông thô lỗ đã xóa phần WPF của chủ đề của tôi, probabley chỉ để có được điểm. Những gì bạn đề xuất làm việc trên WINDOWS FORM DataGridView – Programer

+1

Xin lỗi, tôi đã cập nhật câu trả lời cho WPF – Tsabo

+1

@Tsabo cảm ơn .. nó đã làm việc cho tôi .. Tôi đang tìm kiếm điều này –

2

Check this out, đó là cho một ListBox nhưng cái nhìn sâu sắc là rất tốt và nó cũng có thể làm việc cho lưới điện:

Trong một vài từ: các mục được nạp vào ListBox không đồng bộ, vì vậy nếu bạn gọi ScrollIntoView() trong sự kiện CollectionChanged (hoặc tương tự) nó sẽ không có bất kỳ mục nào được nêu ra, do đó, không có cuộn.

Hy vọng điều đó sẽ giúp ích, điều đó chắc chắn đã giúp tôi! ;-)

Các vấn đề liên quan