vs2003 winform
datagrid中只要选中行,按delete键,就可以对该行进行删除操作
现在我希望在用户按delete键的时候谈出提示框,如果确定删除那就继续执行操作
如果用户取消删除,那么该行的删除事件无效我现在是在DataTable的RowDelete事件中进行操作的
代码如下
……
DataTableName.RowDeleting+=new DataRowChangeEventHandler(dt_RowDeleting);
……
private void dt_RowDeleting(object sender, DataRowChangeEventArgs e)
{
DialogResult objResult=MessageBox.Show(this,"您确定要删除吗?","",MessageBoxButtons.YesNo);
if(objResult == DialogResult.No)
{
MessageBox.Show("删除取消");
return; //这里不知道该如何写才能取消这个RowDeleting事件
}
}
datagrid中只要选中行,按delete键,就可以对该行进行删除操作
现在我希望在用户按delete键的时候谈出提示框,如果确定删除那就继续执行操作
如果用户取消删除,那么该行的删除事件无效我现在是在DataTable的RowDelete事件中进行操作的
代码如下
……
DataTableName.RowDeleting+=new DataRowChangeEventHandler(dt_RowDeleting);
……
private void dt_RowDeleting(object sender, DataRowChangeEventArgs e)
{
DialogResult objResult=MessageBox.Show(this,"您确定要删除吗?","",MessageBoxButtons.YesNo);
if(objResult == DialogResult.No)
{
MessageBox.Show("删除取消");
return; //这里不知道该如何写才能取消这个RowDeleting事件
}
}
解决方案 »
- c#ArrayList对象的类型转换
- 如何制作软件升级补丁
- const问题和一些实例化问题
- 在MaskedTextBox中怎么控制输入范围在00:00:00到23:59:59间。
- 写出一个函数将字符串STR="a,123;b,456;c,789"存入HashMap中。
- 请教高手一个关于从配置文件中读取数据库连接字符串的问题?
- 怎么下载msdn里的sdk文档
- webbrowser 能不能屏蔽按键(就是e.handled)
- WebServices中数据库的更新
- 水晶报表数据源打印的问题
- 我以两行两列的方式,读取数据库中的前4条记录,请问,怎么做?
- 哪位兄弟能够给出一个在WinForm上画一个圆的例子,谢谢!
http://blog.csdn.net/knight94/archive/2006/03/31/646264.aspx
一定要重新构造DataGrid吗?
直接在DataGrid中操作不行吗?
我上面的那段代码,就差结束DataTable的RowDeleting事件了
难道说结束Deleting事件,让Delete不执行,是没办法实现的?
难道说结束Deleting事件,让Delete不执行,是没办法实现的?这个事件没有中途而废之说,由于一个已经被删掉的DataRow,你是无法访问的,因此无法调用Datarow.RejectChanges来回朔,那么相对于DataRow以上最近的集合就是DataTable,但是如果调用DataTable.RejectChanges可以进行回朔,但同时也拒绝了对于此表的其他更新操作。
前10行不能删除,后面的可以删除?
反正我不懂winform
只是帮你up~
你的意思是不是先把dataview.allowdelete设置成false
然后再进行具体的删除操作?
在webform里是删除前的,2005中的webform里增加了一个RowDeleted是删除后的
2003的winform真是.............
RowDeleting这个时间实在删除前触发的
问题就是,触发了以后,不能及时结束
就好象刹车失灵了
问题就在于这个delete键的事件
因为按了键盘上的delete键,一按,就触发一个RowDeleting事件(这个事件是在删除之前的),
现在的问题是没有办法让RowDeleting事件不执行,或者说让RowDeleting事件执行以后
不执行接下来的事件
键盘上的Delete键,似乎捕获不到
{
DialogResult objResult=MessageBox.Show(this,"您确定要删除吗?","",MessageBoxButtons.YesNo);
if(objResult == DialogResult.No)
{
MessageBox.Show("删除取消");
e.Handled=true;//关键
return;
}
else
{
}
}//试试看
没有e.Cancel属性
dataGrid 的KeyDown事件测试不成功
他最先捕获的是RowDeleting事件,执行完了以后,也就执行不料KeyDown事件了
DataGrid真是难伺候啊
愚翁的办法很好
但是似乎不能解决根据条件,自动判断能否删除的效果
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg,System.Windows.Forms.Keys e)
{
if(dataGrid1.Focused||dataGrid1.ContainsFocus)
{
if(e==Keys.Delete)
{
DialogResult objResult=MessageBox.Show(this,"您确定要删除吗?","",MessageBoxButtons.YesNo);
if(objResult == DialogResult.No)
{
MessageBox.Show("删除取消");
return true;
}
}
}
return false;
}
如果是新增的,删除有效,如果不是新增的,删除无效果
我是这么操作的
先把DataTableName.DefaultView.AllowDelete 设置为false
默认情况下不能执行删除操作
这样,再用KeyDown事件,就可以捕获Delete键了
private void DataGridName_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Delete)
{
DialogResult objResult=MessageBox.Show(this,"您确定要删除吗?","",MessageBoxButtons.YesNo);
if(objResult == DialogResult.Yes)
{
DataTableName.Rows[DataGridName.CurrentRowIndex].Delete();
}
}
}
Rows[这里的定位]有点不准
还在想办法
你那个我也试试
你的那个屏蔽效果,非常理想