winform c# datagrid选中一行后按“删除”键直接会删掉,不知怎样在删除前提示一下。我试了捕捉datagrid的键盘和鼠标事件,但都不是很合适。看之前的帖子,发现一个dataGrid2_BeforeDelete事件,应该可以。但不知怎么用,使用前要先绑定吗?完整做法是怎么样的?我加了怎么没反应?
我的程序的本意是先判断本行其中两项是否相等,如不等就不让删除此行。

解决方案 »

  1.   

    在这个事件前加个messagebox。确定就删除,取消就不删除
      

  2.   

    不是这个意思,messagebox在事件里,问题时我的事件根本没有触发
      

  3.   

    messagebox放在按钮的click事件里啊
      

  4.   

    MessageBox.Show(strErrMsg, strCaption, MessageBoxButtons.OKCANCEL,MessageBoxIcon.Exclamation)
      

  5.   

    没有按钮,直接按del就删除了。我想在按下del时给个提示。程序如下:
    private void dataGrid2_BeforeDelete (bool Cancel)
    {
    if (MessageBox.Show("是否真的删除此S/O?","确定操 作",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.Yes)
    Cancel = true;
    else
    Cancel = false;
    }   
    问题是这个事件没有在按del时触发.   
      

  6.   

    int i=this.dataGrid1.CurrentRowIndex;
    string str1=ds.Tables["Author"].Rows[i][0].ToString();
    string str=ds.Tables["Author"].Rows[i][1].ToString();
    DialogResult dr=MessageBox.Show("你真的要删除吗","类别录入",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);
    if(dr==DialogResult.OK)
    {
    SqlCommand comd=new SqlCommand();
    comd.CommandText="delete from Author where AuthorName='"+str+"'";
    comd.Connection=cn;
    cn.Open();
    comd.ExecuteNonQuery();

    // comd.CommandText="delete from Books where AuthorGuid='"+str1+"'";
    // comd.ExecuteNonQuery();
    cn.Close();
      

  7.   

    你首先必须选中DataGrid中的某一行,然后就回得到编号,继而可以删除,并可以显示对话框
      

  8.   

    各位老大,我说话是不是很不清楚,怎么所有人都理解错?我详细说一下。
    我有一个datagrid,正常情况下,选中一列,按键盘上的"del"键,就可以删除这一行,然后我有一个保存按钮,按下后就可以保存。
    但我现在想做到不是所有行都可以删,要在按下删除键后作个判断,如果条件不符就拒绝删除。因此有了之前的dataGrid2_BeforeDelete,按我理解,它应该在按下"del"后执行,但没有。不知该怎么使用。或用什么其他方法实现我的功能。
    拜谢!
      

  9.   

    设置datagrid中禁止删除,或datagrid的数据源(比例dataview)禁止删除(即按del无效),加一删除按钮,根据选定的datagrid行,判断是否符合删除条件,如不符合条件,使用messagebox告之,dataview不执行delete操作;如果符合条件根据选定的datagrid的index在dataview中删除,点击保存按钮可保存,如有撤消按钮也可将删除撤消。