本人想在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时就不能处理消息了???

解决方案 »

  1.   

     MessageBox.Show, 这个好像在Web 中 就不行了吧?  我也不太懂。
      

  2.   

    说明下,窗体是在Winform中做的,生成DLL,然后,用WEB调用DLL。就没法处理消息了
      

  3.   

    可是 WEB中 好像是没有  System.Windows.Forms 这个命名空间的吧。 
       MessageBox.Show,要用到这个命名空间吖。
      

  4.   

    我是在WEB调用Winfrom生成的DLL。。在网页中打开Winfrom程序 ~(o)~
      

  5.   

    是不能web中调用dll不能处理消息??
      

  6.   

    每一个Winform程序在运行的时候都是一个Windows进程,在Windows下,进程都是消息驱动的(比如说健盘事件、鼠标事件等)。Web Application是没有Win32消息处理的。
      

  7.   

    .Net框架下命名空间其实也说明了他们的用途,System.Windows.Forms命名空间中的控件只能用用在Winform程序开发中,System.Web.UI, System.Web.COntrols等则用在Web Application中的. 在Winform中,所有的UI控件都从Control继承而来,都受消息驱动(包括绘制、交互等),而且本身必须要被Host在一个顶层窗口对象中。而在Web开发中,我们所说的控件在运行的时候并不会被初始化成一个对象,而是由服务器解析成对应的Html,然后由浏览器呈现,所以是没有消息概念的。
      

  8.   

    shou dao zhi shi le ,hahaha
      

  9.   

    web不识别相关方法
    activex控件
      

  10.   

    SendKeys.Send();
    这个东西不能用,换个方法来实现
      

  11.   


    我是把Winform程序生成DLL...然后用WEB来调用。实际上还应该是WINFROM程序,MESSAGEBOX。SHOW()都能用.
    SendKeys.SendWait()可以替代SendKeys.Send()解决
    我只想知道protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    为什么会失效。。是不是还需要添加什么引用。。