日期:2014-05-20 浏览次数:20945 次
//下面的代码 左键点击增加选择 右键取消选择,不知道有没有更好的办法
private List<int> selectedRowsIndex = new List<int>();//用来存放选中的index
delegate void SetSelectState(bool deSelect, int rowIndex);
void RefreshTheSelectedStates(bool deSelect, int rowIndex)
{
try
{
foreach (int idx in selectedRowsIndex)
{
dataGridView2.Rows[idx].Selected = true;
}
if (deSelect)
{
dataGridView2.Rows[rowIndex].Selected = false;
}
}
finally
{
dataGridView1.Refresh();
}
}
private void dataGridView2_MouseDown(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo testInfo = dataGridView2.HitTest(e.X, e.Y);
int rowIdx = testInfo.RowIndex;
switch(e.Button)
{
case MouseButtons.Left:
if (rowIdx >= 0)
{
if (!selectedRowsIndex.Contains(rowIdx))
selectedRowsIndex.Add(rowIdx);
dataGridView2.BeginInvoke(new SetSelectState(RefreshTheSelectedStates), false, 0);
}
break;
case MouseButtons.Right:
if (rowIdx >= 0)
{
if (selectedRowsIndex.Contains(rowIdx))
selectedRowsIndex.Remove(rowIdx);
dataGridView2.BeginInvoke(new SetSelectState(RefreshTheSelectedStates), true, rowIdx);
}
break;
}
}
------解决方案--------------------