本人想在DataGridView中实现回车向右跳转的功能,在Winfrom中这段代码是可以用的。但是我把程序编译成DLL,用Web调用该DLL时,该段代码好像根本没有执行。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// enterkey = false;
if (keyData == Keys.Enter) //监听回车事件
{
if (this.DetailGrid.IsCurrentCellInEditMode) //如果当前单元格处于编辑模式
{
// enterkey = true; //把是否点击按钮设置为真
MessageBox.Show("行:" + DetailGrid.CurrentCell.RowIndex + " 列:" + DetailGrid.CurrentCell.ColumnIndex);
if (DetailGrid.CurrentCell.RowIndex == DetailGrid.Rows.Count - 1)
{ MessageBox.Show("你倒是给我弹出来啊"); // SendKeys.SendWait("{Up}");
SendKeys.SendWait("{Tab}");
}
else
{
MessageBox.Show("你倒是给我弹出来啊");
SendKeys.SendWait("{Up}");
SendKeys.SendWait("{Tab}");
}
} }
//继续原来base.ProcessCmdKey中的处理
return base.ProcessCmdKey(ref msg, keyData);
}
不甘心。又试下面这段代码.private void DetailGrid_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Return))
{
SendKeys.Send("{Tab}");
e.Handled = true;
if ((DetailGrid.FirstDisplayedScrollingColumnHiddenWidth > 0) && !DetailGrid.Columns[DetailGrid.SelectedCells[0].ColumnIndex].Frozen)
{
DetailGrid.FirstDisplayedScrollingColumnIndex = DetailGrid.SelectedCells[0].ColumnIndex;
}
}
}"然后弹出错误,,SenKey无法在此程序内运行。原因是此应用程序不处理Windows消息,请将将应用程序改为可处理消息"
后觉得可能是"ref Message msg," 失效了。请问各位哥哥些,要怎么才能 将应用程序改为可处理消息 ?
在Winfrom中是没有问题的。但是我把程序编译成DLL,用Web调用该DLL时就不能处理消息了???
{
// enterkey = false;
if (keyData == Keys.Enter) //监听回车事件
{
if (this.DetailGrid.IsCurrentCellInEditMode) //如果当前单元格处于编辑模式
{
// enterkey = true; //把是否点击按钮设置为真
MessageBox.Show("行:" + DetailGrid.CurrentCell.RowIndex + " 列:" + DetailGrid.CurrentCell.ColumnIndex);
if (DetailGrid.CurrentCell.RowIndex == DetailGrid.Rows.Count - 1)
{ MessageBox.Show("你倒是给我弹出来啊"); // SendKeys.SendWait("{Up}");
SendKeys.SendWait("{Tab}");
}
else
{
MessageBox.Show("你倒是给我弹出来啊");
SendKeys.SendWait("{Up}");
SendKeys.SendWait("{Tab}");
}
} }
//继续原来base.ProcessCmdKey中的处理
return base.ProcessCmdKey(ref msg, keyData);
}
不甘心。又试下面这段代码.private void DetailGrid_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Return))
{
SendKeys.Send("{Tab}");
e.Handled = true;
if ((DetailGrid.FirstDisplayedScrollingColumnHiddenWidth > 0) && !DetailGrid.Columns[DetailGrid.SelectedCells[0].ColumnIndex].Frozen)
{
DetailGrid.FirstDisplayedScrollingColumnIndex = DetailGrid.SelectedCells[0].ColumnIndex;
}
}
}"然后弹出错误,,SenKey无法在此程序内运行。原因是此应用程序不处理Windows消息,请将将应用程序改为可处理消息"
后觉得可能是"ref Message msg," 失效了。请问各位哥哥些,要怎么才能 将应用程序改为可处理消息 ?
在Winfrom中是没有问题的。但是我把程序编译成DLL,用Web调用该DLL时就不能处理消息了???
MessageBox.Show,要用到这个命名空间吖。
activex控件
这个东西不能用,换个方法来实现
我是把Winform程序生成DLL...然后用WEB来调用。实际上还应该是WINFROM程序,MESSAGEBOX。SHOW()都能用.
SendKeys.SendWait()可以替代SendKeys.Send()解决
我只想知道protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
为什么会失效。。是不是还需要添加什么引用。。