.net WPF应用程序需要在内存中保存击键

.net WPF应用程序需要在内存中保存击键,.net,wpf,c#-4.0,.net,Wpf,C# 4.0,我有一个WPF应用程序,用户点击一个按钮,打开另一个WPF表单,输入一个名字。默认情况下,焦点位于名称文本框上。所以他一看到屏幕就可以开始打字了。现在,用户单击按钮,甚至在表单打开之前就开始输入名称。在大多数情况下,他键入的任何内容都会在表单打开后进入该文本框,尽管他在表单打开之前就开始键入。然而,他注意到,前几个字母在某些情况下丢失了。 我知道为什么会这样。这是因为.Net必须在表单打开之前将信件排队,然后将它们放在那里。但是,如果他输入的名字中有大量字符,队列就会松开开头的几个字母 有什么方

我有一个WPF应用程序,用户点击一个按钮,打开另一个WPF表单,输入一个名字。默认情况下,焦点位于名称文本框上。所以他一看到屏幕就可以开始打字了。现在,用户单击按钮,甚至在表单打开之前就开始输入名称。在大多数情况下,他键入的任何内容都会在表单打开后进入该文本框,尽管他在表单打开之前就开始键入。然而,他注意到,前几个字母在某些情况下丢失了。 我知道为什么会这样。这是因为.Net必须在表单打开之前将信件排队,然后将它们放在那里。但是,如果他输入的名字中有大量字符,队列就会松开开头的几个字母


有什么方法可以增加此队列的大小吗?

它没有排队,这是因为您的窗口仍然不存在和/或没有钩住事件。你将无法解决这个问题,也许你可以创建一个非常轻量级的表单,以尽可能快的速度打开它,当键入完成后,再打开真正的表单并设置内容。那么,为什么较小的名称会正确地进入文本框,即使它们是在表单打开之前键入的呢?为什么较长的名字只缺少首字母?为什么较小的名称没有丢失任何内容?如果是这样的话,那么丢失的将是最后一部分,而不是开始部分,因为缓冲区将被填充,新事件将被忽略。因此,您认为存在缓冲区吗?如何增加该缓冲区的大小?如果您是“手动”测试它,那么很多因素都会影响它,创建一个函数来执行SendKeys,然后使用短名称和长名称重新测试。无论如何,如果您确实想确保连接到WndProc,WndProc是接收窗口消息的功能,键盘按键通过此机制传播。如果WndProc中确实存在缓冲区问题,您将看到所有关键消息,然后您可以对它们执行任何您想要的操作。这不是排队,因为您的窗口仍然不存在和/或没有钩住事件。你将无法解决这个问题,也许你可以创建一个非常轻量级的表单,以尽可能快的速度打开它,当键入完成后,再打开真正的表单并设置内容。那么,为什么较小的名称会正确地进入文本框,即使它们是在表单打开之前键入的呢?为什么较长的名字只缺少首字母?为什么较小的名称没有丢失任何内容?如果是这样的话,那么丢失的将是最后一部分,而不是开始部分,因为缓冲区将被填充,新事件将被忽略。因此,您认为存在缓冲区吗?如何增加该缓冲区的大小?如果您是“手动”测试它,那么很多因素都会影响它,创建一个函数来执行SendKeys,然后使用短名称和长名称重新测试。无论如何,如果您确实想确保连接到WndProc,WndProc是接收窗口消息的功能,键盘按键通过此机制传播。如果WndProc中确实存在缓冲区问题,您将看到所有关键消息,然后您可以对它们执行任何操作