原因
如果在nanui
的 window
意外还额外打开了别的 winform 窗体
就很有可能导致 明明input输入框
已经获得了焦点 却始终无法输入的问题
如何解决
只需要在 nanui 窗体 失去焦点的时候 , 在让其获得焦点即可
但是这样有一个缺点就是 打开的调试窗口 也会被nanui 窗口覆盖导致无法调试
所以,在debug
的时候 建议关闭防失焦处理
第一
在nanui mainwindow
的 OnReady
下添加代码:
protected override void OnReady()
{
//在不是调试的时候开启 防失焦
if (!isDebug)
{
Form form = (Form)HostWindow;
form.Deactivate += Form_Deactivate;
}
}
如果使用的是最新版本的 nanui 需要这样写:
Form form = (Form)Form.FromHandle(HostWindowHandle);
form.Deactivate += Form_Deactivate;
第二
在nanui mainwindow
下添加2个方法:
private void Form_Deactivate(object sender, System.EventArgs e)
{
SendFocus();
}
public void SendFocus()
{
Form form = (Form)HostWindow;
form.Activate();
form.Focus();
CefKeyEvent cefKeyEvent = new CefKeyEvent
{
EventType = CefKeyEventType.KeyDown,
WindowsKeyCode = 0,
Modifiers = CefEventFlags.None
};
GetHost().SendKeyEvent(cefKeyEvent);
}