0
我在我的應用程序中有一個datagridview。我希望能夠選擇一行或多行,然後單擊鼠標右鍵並獲取上下文菜單。上下文菜單中的選項會對選定的行執行某些操作,例如隱藏它們。對於datagridview,我有multiselect = true和selectionmode = fullrowselect。出於某種原因,datagridview.selectedrows.count始終爲0.爲什麼會這樣呢?這裏是代碼...DataGridView.SelectedRows.Count always = 0
private void Form1_Load(object sender, EventArgs e)
{
Image img = null;
contextMenuStrip1.Items.Add("Hide selected", img, new System.EventHandler(contextMenuStrip1_Click));
contextMenuStrip1.Items.Add("Unhide all", img, new System.EventHandler(contextMenuStrip1_Click));
dataGridView1.ContextMenuStrip = contextMenuStrip1;
}
private void contextMenuStrip1_Click(object sender, EventArgs e)
{
switch (sender.ToString().Trim())
{
case "Hide selected":
//Necessary because a row with the current cell cannot be hidden.
dataGridView1.CurrentCell = null;
int count = dataGridView1.SelectedRows.Count;
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
row.Visible = false;
}
break;
case "Unhide all":
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Visible = true;
}
break;
}
}
如果你不想隱藏當前小區,你總是可以做一個檢查,你遍歷行,看是否發件人單元格在該行中並跳過它。 – krillgar
謝謝!我創建了一個新的DataGridViewSelectedRowCollection並將其設置爲等於dataGridView1.SelectedRows。然後,我刪除了dataGridView1.CurrentCell,以便可以隱藏現在的當前單元格的行。 – user1851758