winform datagridview 通过右键菜单来删除数据行

本文介绍如何通过鼠标操作实现DataGridView中数据行的删除功能,包括鼠标移入时记录行号、右键删除及键盘Del键删除的具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.实现当鼠标移到数据行时,右键删除数据。

 步骤1.先定义变量CurrentRowIndex来存储鼠标经过的行数。

如下:

ExpandedBlockStart.gifView Code
1   public partial class FormTest : Form
2     {
3         private bool isLoad { getset; }
4         /// <summary>
5         /// 当前行号
6         /// </summary>
7         private int CurrentRowIndex { getset; }

 

 2.为该变量赋值。使用CellMouseEnter

代码如下:

 

ExpandedBlockStart.gifView Code
1 private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
2         {
3             var dgv = (DataGridView)sender;
4             CurrentRowIndex = e.RowIndex;
5             CurrentColumnIndex = e.ColumnIndex;
6             
7         }

 

 3.右键鼠标,然后点击删除,

代码如下:

ExpandedBlockStart.gifView Code
1  private void removeToolStripMenuItem_Click(object sender, EventArgs e)
2         {
3            // DataGridViewRowCollection rowCollection = new DataGridViewRowCollection(dataGridView1);
4             DataGridViewRow row = dataGridView1.Rows[CurrentRowIndex];
5           dataGridView1.Rows.Remove(row);
6             //防止滚动条滚到不是想要到的地方。
7           dataGridView1.CurrentCell = dataGridView1[0, CurrentRowIndex];
8             
9         }

 

4.删除行是的条件判断 处理。

4.1当按下del键时,执行如下函数

  

ExpandedBlockStart.gifView Code
 1   private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
 2         {
 3             // 删除前的用户确认。
 4             if (MessageBox.Show("确认要删除该行数据吗?""删除确认",
 5                 MessageBoxButtons.OKCancel,
 6                 MessageBoxIcon.Question,
 7                 MessageBoxDefaultButton.Button2) != DialogResult.OK)
 8             {
 9                 // 如果不是 OK,则取消。
10                 e.Cancel = true;
11             }
12         }

 

 4.2若按鼠标右键删除时,可执行如下函数。

 

ExpandedBlockStart.gifView Code
 1  private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
 2         {
 3             if (!isLoad)
 4             {
 5                 if (MessageBox.Show(
 6                     "确定要删除数据吗?",
 7                     "删除确认",
 8                     MessageBoxButtons.OKCancel, 
 9                     MessageBoxIcon.Question, 
10                     MessageBoxDefaultButton.Button2) == DialogResult.OK
11                     )
12                 {
13                     int removeIndex = e.RowIndex;
14                     //     string removeColumnOneText = Convert.ToString(dataGridView1[0,e.RowIndex].Value);
15                     MessageBox.Show("你的数据被删除了:" + removeIndex);
16                 }
17                
18             }
19          
20         }

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值