1.实现当鼠标移到数据行时,右键删除数据。
步骤1.先定义变量CurrentRowIndex来存储鼠标经过的行数。
如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1
public
partial
class
FormTest : Form
2 {
3 private bool isLoad { get ; set ; }
4 /// <summary>
5 /// 当前行号
6 /// </summary>
7 private int CurrentRowIndex { get ; set ; }
2 {
3 private bool isLoad { get ; set ; }
4 /// <summary>
5 /// 当前行号
6 /// </summary>
7 private int CurrentRowIndex { get ; set ; }
2.为该变量赋值。使用CellMouseEnter
代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
2 {
3 var dgv = (DataGridView)sender;
4 CurrentRowIndex = e.RowIndex;
5 CurrentColumnIndex = e.ColumnIndex;
6
7 }
3.右键鼠标,然后点击删除,
代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
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键时,执行如下函数
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
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若按鼠标右键删除时,可执行如下函数。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
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 }