dc = new DataGridTextBoxColumn() ;
dc.TextBox.KeyDown +=new System.Windows.Forms.KeyEventHandler( this.KeyEnter );
private void KeyEnter( object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
string cell=this.dgPart.CurrentCell.ToString();
}
}其他按键都相应这个事件,为什么按enter键吧响应啊?有什么解决办法吗??
dc.TextBox.KeyDown +=new System.Windows.Forms.KeyEventHandler( this.KeyEnter );
private void KeyEnter( object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
string cell=this.dgPart.CurrentCell.ToString();
}
}其他按键都相应这个事件,为什么按enter键吧响应啊?有什么解决办法吗??
if(e.KeyCode == (char)Keys.Enter)
最关键是按了enter键,吧响应KeyEnter事件。
if ( e.KeyData == Keys.Enter )
{
string cell=this.dgPart.CurrentCell.ToString();
}
if (e.KeyValue == 0x0d)
{
}
{
if (e.KeyValue == (int)Keys.Enter)
{
MessageBox.Show("OK");
}
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar==(char)Keys.Enter)
{
string cell=this.dgPart.CurrentCell.ToString();
}
}
按下enter键,程序没跑到 KeyEnter这个事件。也就是相当于没响应keypress事件(KeyEnter事件是textbox的keypress事件委托来的)。跟if判断没关系的。可以确定这个判断是可行的。
现在一个解决办法是:重写ProcessCmdKey方法。
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if (keyData == Keys.Enter)
{
//把enter键换成F12键。
msg.WParam= (System.IntPtr)123;
}
return base.ProcessCmdKey(ref msg,keyData);
}
然后在后面的KeyEnter事件中,判断是否是按了F12键。
private void KeyEnter( object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode.ToString() == "F12")
{
MessageBox.Show( "OK ");
}
}
实现是可以实现了,但是总觉得不是佷好
谁有更好的办法啊????