Abi*_*vis 5 c# wpf resize window windows-8
我有一个运行在Windows 8平板电脑上的wpf应用程序.并且当焦点在任何时候为了打字键盘TextBox.
我正在调用TabTip.exe进程来显示键盘,当显示键盘时我的应用程序缩小了.在所有操作之后,都有一个保存按钮.当我单击保存按钮时,键盘应该消失,我的应用程序应该恢复到原始大小.
我正在杀死进程TabTip.exe以关闭键盘,但应用程序将不会重新调整其原始大小.
我试过了:
if (process.ProcessName == "TabTip")
{
Application.Current.MainWindow.VerticalAlignment = VerticalAlignment.Stretch;
process.Kill();
Application.Current.MainWindow.Height = SystemParameters.WorkArea.Height;
Application.Current.MainWindow.Width = SystemParameters.WorkArea.Width;
Application.Current.MainWindow.WindowState = WindowState.Normal;
Application.Current.MainWindow.WindowState = WindowState.Maximized;
break;
}
Run Code Online (Sandbox Code Playgroud)
有人知道在杀死TabTip.exe后将应用程序恢复到原始大小吗?
Ell*_*art 15
Windows 8键盘存在许多渲染问题.这些可以通过以较小的模式启动键盘来减轻(相当于按下最小化按钮).然后,它在WPF中发挥得更好,实际上在启动和关闭进程时最小化和扩展.
这需要在此模式下启动该过程,并以比您现在更好的方式关闭它
包括这些库:
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Interop;
Run Code Online (Sandbox Code Playgroud)
并定义这个外部函数:
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String sClassName, String sAppName);
Run Code Online (Sandbox Code Playgroud)
打开键盘:
public static void openKeyboard()
{
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess = Process.Start(startInfo);
}
Run Code Online (Sandbox Code Playgroud)
并关闭它:
public static void closeKeyboard()
{
uint WM_SYSCOMMAND = 274;
uint SC_CLOSE = 61536;
IntPtr KeyboardWnd = FindWindow("IPTip_Main_Window", null);
PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, (int)SC_CLOSE, 0);
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供屏幕键盘上最佳表现的Windows 8.运气好的话,它会解决你的渲染问题.