实现DataGridView选中一行右键出现菜单的示例代码可以通过以下步骤实现。
- 添加ContextMenuStrip控件
首先,在窗体中添加一个DataGridView控件,并在DataGridView的属性中设置ContextMenuStrip
属性为一个已经添加好的ContextMenuStrip
控件。
- 为DatGridView添加事件
然后在窗体的代码编辑器中找到DataGridView的MouseClick
事件,并在事件方法中添加以下代码:
if (e.Button == MouseButtons.Right)
{
DataGridView.HitTestInfo hitInfo = dataGridView1.HitTest(e.X, e.Y);
if (hitInfo.Type == DataGridViewHitTestType.Cell)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[hitInfo.RowIndex].Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[hitInfo.RowIndex].Cells[hitInfo.ColumnIndex];
contextMenuStrip1.Show(dataGridView1, e.Location);
}
}
以上代码实现了当用户在DataGridView中右键单击时,选中单元格中的整行,并显示ContextMenuStrip菜单。
示例1
在用户右键单击鼠标以显示菜单之前,我们需要绑定ContextMenuStrip菜单中的事件。例如,当用户单击了ContextMenuStrip菜单中的“删除”选项时,应该执行某些代码。可以使用以下代码来实现:
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure you want to delete this row?", "Confirmation",
MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
dataGridView1.Rows.Remove(row);
}
}
}
以上代码实现了当用户单击ContextMenuStrip中的“删除”选项时,会弹出一个对话框,询问用户是否确定删除该行数据。如果用户点击了“是”按钮,则会删除所选行。
示例2
我们可以通过使用Windows API函数(可通过DllImport导入)来实现在右键菜单上设置图标。实现以下步骤:
a. 引入API函数,例如:
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType, int cxDesired, int cyDesired, uint fuLoad);
b. 在应用程序中添加ICO文件
c. 添加一个ImageList
控件,并设置其ImageSize
为16,16
,并将ICO文件添加到ImageList
中。
d. 将DataGridView的ContextMenuStrip
控件的ImageList
属性设置为上一步中添加的ImageList控件。
e. 在ContextMenuStrip
的Items
中添加菜单项,并为它们设置图片。此处只给出一个示例。
deleteToolStripMenuItem.Image = (Image)(Properties.Resources.Delete_16x);
在以上代码中,我们通过属性Image
给“删除”菜单项添加了一个16x16的ICO图标。
综上所述,我们可以通过上述两个示例,为DataGridView的右键菜单添加功能和图标。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 实现dataGridView选中一行右键出现菜单的示例代码 - Python技术站