Winform 的dadagridview控件的修改操作

      在.NET中,我们一般用datagridview这个控件来获取存储过程执行的返回值以输出显示.针对这种情况而言,通常的做法是在其CLICK事件中添加代码,通过激发此事件,调用数据操作,调用存储过程,执行SQL,修改数据库存储的内容。如果用架构的话就更省事,同时避免了对数据层的频繁操作.
     还有一种更简单的办法,datagridview这个控件本来就带有增删改查的功能,先绑定好数据源,注意:一定把主键绑定进去,这个主键也是所谓的那个要删除的行的主键,没问题的就OK了,直接实现删除功能!

在删除操作中的提示确认框
            DialogResult result = MessageBox.Show("确定删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            switch (result)
            {
                case DialogResult.OK: MessageBox.Show("你按了确定"); break;
                case DialogResult.Cancel: MessageBox.Show("你按了取消"); break;
            }
            //DialogResult r = MessageBox.Show("真的要删除此行吗?", "提醒", MessageBoxButtons.YesNo);
            //if (r.ToString() == "Yes")
            //    e.Cancel = false;
            //else e.Cancel = true;

右键弹出菜单框的两种做法:

1:是使用dataGridView的CellMouseDown事件,判断点击的鼠标是不是右键按钮,不建议这种做法。
        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (e.RowIndex >-1)
                {

                    //弹出操作菜单
                    contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
                }

            }
        }

2:dataGridView的CellContextMenuStripNeeded事件是专门为我们提供上下文菜单栏的事件,准备好了。 

   private void dataGridView2_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
        {
            if (e.RowIndex >-1 )
            {
                e.ContextMenuStrip = this.contextMenuStrip1;
            }
        }

为datagridview控件直接增加一行数据,原本我们可以通过datagridview.Rows.Add(row)直接增加一行的,但是,往往我们会给datagridview绑定数据,这时就会报“控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行”这个错,

这时我们可以通过添加DataTable,再绑定datagridview来达到相同的效果。

            DataTable dt = (DataTable)datagridview.DataSource;

            DataRow dr = dt.NewRow();        
            dr[1] = "N";
            //dt.Rows.Add(dr);

            // dt.Rows.InsertAt(dr, currentRowIndex);
            dataGridView.DataSource = dt;

       

void dataGridView2_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
  if (e.Control)  //组合键 ,按下Ctrl建
  {

原文地址:https://www.cnblogs.com/panjun/p/1955601.html