2015-07-10 111 views
0

说,例如,我有一个asp按钮:当用户点击asp按钮时,如何模拟键盘按钮?

<asp:Button id="btnCustomDropDown" 
Text="*" 
OnClick="txtOutputRating_btnPressed" 
runat="server"/> 

当用户按下该按钮,我想按下一个键盘按键。例如键盘上的向下键。我在后端想着这样的事情。这可能吗?

void txtOutputRating_btnPressed(Object sender, EventArgs e) 
    { 
     System.Windows.Forms.SendKeys.Send("{DOWN}"); 
    } 
+0

借你想去哪里被按下键盘按键?用户点击客户端机器上的按钮,而您的代码隐藏在服务器上运行... –

+0

@PaoloTedesco我希望它在用户端被按下。 – SimplyZ

回答

0

简短的回答是否 - 它不起作用。

长的答案是...... 它完全取决于您的软件堆栈(例如,您运行的是什么Web服务器)。

在IIS下,您的代码将运行但不起作用。 IIS(我相信)作为不允许UI交互的服务运行。

如果您正在使用VS dev服务器运行,那么您的代码可能仅适用于本地计算机。

即使您发现允许用户界面交互来托管您的页面的生产就绪Web服务器,您的代码隐藏仍在服务器上运行。没有用于将按键注入系统的客户端Web浏览器API。

+0

谢谢。这是非常丰富的。 – SimplyZ

0

试试这个 - JS代码this thread

<asp:Button OnClientClick="pressDown();" /> 

<script> 
    var keyboardEvent = document.createEvent("KeyboardEvent"); 
    var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent"; 

    function pressDown() { 
     keyboardEvent[initMethod](
      "keydown", // event type : keydown, keyup, keypress 
      true, // bubbles 
      true, // cancelable 
      window, // viewArg: should be window 
      false, // ctrlKeyArg 
      false, // altKeyArg 
      false, // shiftKeyArg 
      false, // metaKeyArg 
      40, // keyCodeArg : unsigned long the virtual key code, else 0 
      0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0 
     ); 

     document.dispatchEvent(keyboardEvent); 
    } 
</script>