按Escape键可以调用方法

时间:2009-11-25 17:01:02

标签: c# methods key

如果按下某个键,有没有办法在C#中启动方法?例如, Esc

10 个答案:

答案 0 :(得分:22)

使用文本框的OnKeyPress事件和事件

if(e.KeyCode==Keys.Escape)
{
    yourTextBox.Text = string.Empty;
}

答案 1 :(得分:14)

正如其他人所提到的,处理相应控件的KeyDownKeyUp事件。 KeyPress事件也适用于 Escape 键,但它不会触发某些键,例如 Shift Ctrl ALt

如果您想在用户按下 Escape 键时执行此功能,那么您可能希望在表单上处理该事件。如果这样做,您可能还希望将Form的KeyPreview属性设置为true。这将允许Form控件接收事件,即使焦点当前位于其中一个子控件内。

如果您希望行为特定于控件,例如清除当前具有焦点的文本框中的文本,那么您应该处理{{1}的KeyDownKeyUp事件}} 控制。这样,如果用户按下文本框外部的转义键,则不会触发事件处理程序。

在某些情况下,您可能希望阻止子控件处理您刚刚处理的同一事件。您可以使用TextBox类上的SuppressKeyPress属性来控制此行为:

KeyEventArgs

答案 2 :(得分:4)

  

我正在编写WinForms应用程序。用户填写文本框,如果他想删除所有内容,他只需点击键盘上的 esc

我认为您需要处理the KeyDown event

答案 3 :(得分:3)

您必须将表单属性“KeyPreview”切换为true ,否则您的活动不会被触发。即使事件是正确的,单独处理这些事件也不会做任何事情。即使您订阅了正确的事件处理程序,它也会让您感觉不到任何真正的事情。

答案 4 :(得分:3)

如果有人在控制台应用

中寻找如何执行此操作
if (Console.ReadKey().Key == ConsoleKey.Escape)
{
    return;
}

答案 5 :(得分:2)

首先在属性中执行> KeyPreview:True

然后:

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Escape)
        {
            //call your method here
        }
    }

答案 6 :(得分:1)

您是在编写控制台应用程序,WinForms应用程序还是其他什么?您是否一直试图捕获 ESC 键(无论是聚焦窗口/应用程序)还是其他什么?

需要更多上下文。

如果您正在编写Console应用程序,那么您应该开始查看Console.ReadKey之类的内容......

http://msdn.microsoft.com/en-us/library/system.console.readkey.aspx

答案 7 :(得分:0)

使用Event KeyPress ...

   //Escape 
   if (e.KeyChar == '')
   {
            this.DialogResult = DialogResult.Cancel;
            e.Handled = true;
   }

答案 8 :(得分:0)

您也可以使用KeyUp事件。我更喜欢它。

private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
     if (e.Key == Key.Escape) {
         //WHAT WILL HAPPEN INSERT HERE
     }
}

答案 9 :(得分:0)

这里多次列出基本答案

实施 Form_KeyDown

Private Sub frmCustomerSearch_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        Try
            If e.KeyCode = Keys.Escape Then

                ClearFindForm()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

End Sub

设置 form.keyPreview

form.KeyPreview = true

您需要检查的另一件事是您是否有一个捕获 ESC 的按钮,因此它可以是 form.cancelButton

确定...

form.CancelButton = nothing

这是偷偷摸摸的。如果您已经设置并忘记了它,Escape 键将不会触发 KeyDown 事件。

我之所以这样做是因为将按钮设置为表单。CancelButton 如果不可见或在不可见的选项卡上似乎不会触发,因此 KEYDOWN 是您唯一的选择。