数据控件 dataGridView1 上下文菜单 contextMenuStrip1
1 鼠标右键点击行头显示上下文菜单
2 右键点击行头 若本来无选中行 则选中该行
若有选中行 则判断选中行是否包含当前行 包含则无操作 不包含则取原选中 然后选中当前行
1 鼠标右键点击行头显示上下文菜单
2 右键点击行头 若本来无选中行 则选中该行
若有选中行 则判断选中行是否包含当前行 包含则无操作 不包含则取原选中 然后选中当前行
//上下文菜单控制
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
System.Windows.Forms.DataGridView.HitTestInfo hti = dataGridView1.HitTest(e.X, e.Y);
if ((e.Button == MouseButtons.Right) && (hti.Type == DataGridViewHitTestType.RowHeader))//行头点击鼠标右键
{
dataGridView1.ContextMenuStrip = contextMenuStrip1;
}
else
{
dataGridView1.ContextMenuStrip = null;
}
//
int selectedIndex = hti.RowIndex;//选中行索引
DataGridViewRow selectedRow = dataGridView1.Rows[selectedIndex];//选中行
if (selectedIndex >= 0)
{
if (dataGridView1.SelectedRows.Count == 0)//无选中行 则选中当前行
{
dataGridView1.ClearSelection();
selectedRow.Selected = true;
}
else
{
if (!dataGridView1.SelectedRows.Contains(selectedRow))//有选中行 是否包含当前行
{
dataGridView1.ClearSelection();
selectedRow.Selected = true;
}
}
}
}
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
System.Windows.Forms.DataGridView.HitTestInfo hti = dataGridView1.HitTest(e.X, e.Y);
if ((e.Button == MouseButtons.Right) && (hti.Type == DataGridViewHitTestType.RowHeader))//行头点击鼠标右键
{
dataGridView1.ContextMenuStrip = contextMenuStrip1;
}
else
{
dataGridView1.ContextMenuStrip = null;
}
//
int selectedIndex = hti.RowIndex;//选中行索引
DataGridViewRow selectedRow = dataGridView1.Rows[selectedIndex];//选中行
if (selectedIndex >= 0)
{
if (dataGridView1.SelectedRows.Count == 0)//无选中行 则选中当前行
{
dataGridView1.ClearSelection();
selectedRow.Selected = true;
}
else
{
if (!dataGridView1.SelectedRows.Contains(selectedRow))//有选中行 是否包含当前行
{
dataGridView1.ClearSelection();
selectedRow.Selected = true;
}
}
}
}