如何创建删除dataGridView Box中的行的左键单击按钮?

时间:2014-05-04 15:39:25

标签: c# winforms datagridview

Here is我正在使用的数据网格框。

我想创建一个删除所选行的左键单击按钮。 到目前为止我有这个:

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        ContextMenu m = new ContextMenu();
        m.MenuItems.Add(new MenuItem("Delete Current Row"));
        m.MenuItems.Add(new MenuItem("Duplicate Row"));

        int currentMouseOverRow = dataGridView1.HitTest(e.X, e.Y).RowIndex;
        if (currentMouseOverRow >= 0)
        {
            m.MenuItems.Add(new MenuItem(string.Format("Delete this row", currentMouseOverRow.ToString())));
            foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
            {
                dataGridView1.Rows.RemoveAt(item.Index);
            }
        }
        m.Show(dataGridView1, new Point(e.X, e.Y));
    }

1 个答案:

答案 0 :(得分:0)

您需要向ContexMenu添加新活动," ItemClicked"。它有物品,但没有事件。

我的想法:使用Designer添加一个" ContexMenUStrip"来自" ToolBox"。它似乎是设计师的底层。给它一个名字,比如" DataGridContexMenu"。然后选择您的数据网格,并设置它" ContexMenuStrip"匹配你新制作的" DataGridContexMenu"。

每次右键单击数据网格时,清除" DataGridContexMenu"中的旧项目。添加想要的项目,就像您在代码中所做的那样:

DataGridContexMenu.Items.Clear();

您可以使用"标记" -property来识别菜单上的每个项目:

DataGridContexMenu.Items.Add(new ToolStripMenuItem()
            {
                Name = "Elements_Copy_ToolStripMenuItem",
                Tag = "Copy",
                Text = "Copy columns",
                ToolTipText = "Click to copy"
            });

然后添加一个新的" ItemClicked"事件发生在这个" DataGridContexMenu"在设计师:

private void DataContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
   switch (e.ClickedItem.Tag.ToString())
   {
      case "Copy":
         // Your operations code here..
         break;
   }
}