Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WinForms c中获得集中控制的最快方法?_C#_Winforms - Fatal编程技术网

C# 在WinForms c中获得集中控制的最快方法?

C# 在WinForms c中获得集中控制的最快方法?,c#,winforms,C#,Winforms,我在应用程序的主窗体窗口中使用ProcessCmdKey来测试某些键,并提供空间、右键、左键和其他一些特殊处理。即使用户在嵌套的用户控件集中的文本框中键入内容,也会调用主窗体中的ProcessCmdKey。我不想在他们关注文本框控件时处理空格键,因为他们永远无法键入空格。如何在应用程序范围内测试当前聚焦窗口的类型 您可以通过以下方式获得窗口句柄: [DllImport("user32.dll")] private static extern IntPtr GetFocus(); 然后,

我在应用程序的主窗体窗口中使用ProcessCmdKey来测试某些键,并提供空间、右键、左键和其他一些特殊处理。即使用户在嵌套的用户控件集中的文本框中键入内容,也会调用主窗体中的ProcessCmdKey。我不想在他们关注文本框控件时处理空格键,因为他们永远无法键入空格。如何在应用程序范围内测试当前聚焦窗口的类型

您可以通过以下方式获得窗口句柄:

  [DllImport("user32.dll")]
  private static extern IntPtr GetFocus();

然后,您可以使用获取与该句柄(如果有)关联的.NET控件。

找到一些似乎有效的内容:

[DllImport("user32.dll")]
static extern IntPtr GetFocus();

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    IntPtr wndHandle = GetFocus();
    Control focusedControl = FromChildHandle(wndHandle);
    if(focusedControl is DevExpress.XtraEditors.TextBoxMaskBox)
    {
       return base.ProcessCmdKey(ref msg, keyData);
    }
    ...
}
另见