2016-04-11 16 views
-1

olarak seçilecek şekilde ayarla Basitçe söyleyin - Bir datagridview'ın SelectionChanged olayını işlemek ve geçerli bir satırın veya satırların tüm hücreleri seçiliyse Satır öğesi "seçili" satırını true olarak ve seçim değiştiğinde ve tüm hücreler seçili değilse, satırın seçimini iptal etmek için. Bir sürü çek ve döngülerle bunu manuel olarak yapabilirdim, ama bu zor olmalı diye düşünmekten uzağım. Şimdiden teşekkürler! Ve bu hile yapmak gerekirDatagridview'ın bir satırındaki tüm hücreleri seçerken, satırı

cevap

0

... görünüşe aptal soru için üzgünüm: Ben kontroller ve döngüler bir çift, bu şekilde yapılabilir dediğinde

// Your property to get the current state from. 
public bool IsChecked = false; 

private void RowSelected() 
{ 
    // Count all selected cells that have the same row-index as the first cell. 
    int cellsSelected = datagridview.SelectedCells.Cast<DataGridViewCell>().Select(x => x).Where(x => x.RowIndex == datagridview.SelectedCells[0].RowIndex).Count(); 
    // If count of cells == count of columns -> all cells are selected. 
    IsChecked = (cellsSelected == datagridview.Columns.Count) ? true : false; 
} 

public void DataGridView_SelectionChanged(object sender, EventArgs e) 
{ 
    // Will take care for the switch. 
    RowSelected(); 
} 
+0

Ben böyle tam bir anlamı . Ama bunun tek uygun yol olduğundan ve bu yüzden en iyisi olduğundan emin misin? Yine de kod için teşekkürler! –

+0

@ D.Petrov "Bir çift" ses, bana 5 yöntem ve 3 if-else ifadesi gibi geliyor. Aslında bu, hücrelerin sayımını yapan tek bir satıra ve sayımın "tam satır" anlamına gelip gelmeyeceğine karar veren bir satıra sahip. Holding değişkenini düşünmek için 3 satır Kodunuz var. Çok fazla değil mi? Neden "DataGridView" öğesini "FullRowSelect" olarak ayarlamıyorsunuz? Tek hücreler seçme yeteneğine ihtiyacınız var mı? – C4u

İlgili konular