如何捕捉DataGrid中的DataGridTextBox输入的回车键? 现在可以捕获到其他键盘按键,但按下回车键时会直跳转到下一行,不会激活事件,请怎样可以? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 onkeydown捕捉到“回车键”后,event.returnValue=false;再做你自己的处理 http://www.syncfusion.com 的faq里去找找 看样子就是WinForm下的DataGrid了好了给你现成的吧: public class MyDataGrid : DataGrid { protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) { if(EnterAsTab&&msg.WParam.ToInt32() == (int) Keys.Enter) { SendKeys.Send("{Tab}"); return true; } return base.ProcessCmdKey(ref msg, keyData); } } 创建你的类库,把这放进去编译一下再把放在你自己的工具箱中,拖到窗体中,试试吧,实在还不会,有机会我就给你一个dll好了,我自己的功能稍稍多些 对了,上面的EnterAsTab是一个属性,你可以自己添加,要不删除它为了能一次把代码贴出就没全贴了 -----------------------可是我现在无法捕获到回车键啊,一回车系统自动就跳到下一行去了.-----------------------我说的是onkeydown,肯定能捕捉到回车键的,如果你不做event.returnValue=false就有可能会失去焦点。你可以试试先。event.returnValue=false;return false; //这句需不需要我不确定,你试试吧。 在asp.net中,如何回车触发指定按钮的事件?假设:<asp:TextBox id="TextBox1" runat="server" Width="240px"></asp:TextBox><asp:Button id="ButtonOK" runat="server" BorderWidth="1px" BorderColor="Purple" BorderStyle="Solid" Text="Search Site"></asp:Button> 解决方法:在.aspx页面中添加:<SCRIPT LANGUAGE="javascript">function EnterKeyClick(button) { if (event.keyCode == 13) { event.keyCode=9; event.returnValue = false; document.all[button].click(); }}</SCRIPT> 在Page_Load事件中添加:TextBox1.Attributes.Add("onkeydown","EnterKeyClick('ButtonOK');"); this.TextBox1.Attributes.Add("onkeydown","if(event.keyCode == 13){document.getElementById('按钮ID').click();"); function enterkey(){try{var el_keydown=window.event.srcElement;if(event.keyCode==13 && el_keydown.name=="textfield") //如果在 textfield这个输入框中按回车{ document.all.hrf.focus(); }}catch(e) {alert (e.message); } }关键字:</font> <input type="text" onkeyDown="enterkey();" name="textfield" class="input3"> 对不起,引起了大家的误会,是WinForm. lovevsnet(编程一把手) 所说的方法,现在正在用,只是希望可以找到更直接一点的方法,所以来请教高手,是不是只能那种方法,不能用DataGridText直接捕获吗?感谢大家. 用我那现成的试过没有如果不想自己写DataGrid再告诉你一个简单的方法,那就是对Form1操作,因为DataGrid总会在窗口中吧Form1.KeyPreview=true;在Form1的KeyUp事件中加入如下代码: private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.KeyCode==Keys.Enter) SendKeys.Send("{Tab}"); }---------------------------------------------不过我还是推荐你用我上面的方法重写DataGrid 我推荐你用我上面方法重写DataGrid的原因是:当你手动添加的每一列DataGridTextBoxColumn 时用Form1的KeyUp事件可能会失效(跳到下一行) 如何用timer控件控制创建一个新窗体,并且隐藏当前窗体(杂症) 想写一个自动生成代码的工具,求教!! 小妹请问奇怪的委托事件! 内存益处还是什么呢,大家来看下谢谢 大家帮忙看看啊,急!!! C#调用oracle包中的procedure就没有问题,调用包中的function就不行了..... 关于读出数据的问题 使用xml文件,做数据的导入,导出 的问题 终于升星了,散分!手下留情~ datagrid中问题,我想大家都遇到过吧?? 程序正常关闭后为何进程中还有该程序,怎么彻底退出应用程序呢? 非常急。。。。。。。。。。。。。。。。。
捕捉到“回车键”后,event.returnValue=false;再做你自己的处理
好了给你现成的吧:
public class MyDataGrid : DataGrid
{
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(EnterAsTab&&msg.WParam.ToInt32() == (int) Keys.Enter)
{
SendKeys.Send("{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
创建你的类库,把这放进去编译一下
再把放在你自己的工具箱中,拖到窗体中,试试吧,实在还不会,有机会我就给你一个dll好了,我自己的功能稍稍多些
为了能一次把代码贴出就没全贴了
可是我现在无法捕获到回车键啊,一回车系统自动就跳到下一行去了.
-----------------------我说的是onkeydown,肯定能捕捉到回车键的,如果你不做event.returnValue=false就有可能会失去焦点。你可以试试先。
event.returnValue=false;
return false; //这句需不需要我不确定,你试试吧。
假设:
<asp:TextBox id="TextBox1" runat="server" Width="240px"></asp:TextBox>
<asp:Button id="ButtonOK" runat="server" BorderWidth="1px" BorderColor="Purple" BorderStyle="Solid" Text="Search Site"></asp:Button> 解决方法:
在.aspx页面中添加:
<SCRIPT LANGUAGE="javascript">
function EnterKeyClick(button)
{
if (event.keyCode == 13)
{
event.keyCode=9;
event.returnValue = false;
document.all[button].click();
}
}
</SCRIPT> 在Page_Load事件中添加:
TextBox1.Attributes.Add("onkeydown","EnterKeyClick('ButtonOK');");
{
try
{
var el_keydown=window.event.srcElement;
if(event.keyCode==13 && el_keydown.name=="textfield") //如果在 textfield这个输入框中按回车
{
document.all.hrf.focus();
}
}
catch(e)
{
alert (e.message);
}
}
关键字:</font> <input type="text" onkeyDown="enterkey();" name="textfield" class="input3">
lovevsnet(编程一把手) 所说的方法,现在正在用,只是希望可以找到更直接一点的方法,所以来请教高手,是不是只能那种方法,不能用DataGridText直接捕获吗?感谢大家.
如果不想自己写DataGrid
再告诉你一个简单的方法,那就是对Form1操作,因为DataGrid总会在窗口中吧
Form1.KeyPreview=true;
在Form1的KeyUp事件中加入如下代码:
private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode==Keys.Enter)
SendKeys.Send("{Tab}");
}
---------------------------------------------
不过我还是推荐你用我上面的方法重写DataGrid
时
用Form1的KeyUp事件可能会失效(跳到下一行)