在应用程序中,我在平板电脑上运行时使用屏幕键盘(OSK).我们创建了一个名为OSK的类,它有一个show和hide方法.
当用户按下屏幕键盘上的"输入"时,osk会隐藏.问题是当用户使用关闭(x)按钮关闭OSK时.OSK隐藏了,但是当发生这种情况时,有些事情需要在UI中进行更改.
有没有办法(一个事件或类似的东西)知道用户何时按下OSK上的关闭按钮?
我将展示一些我用于显示和隐藏OSK的代码.显示的代码在Oxygene中(但它看起来很像C#我认为)
首先我们有一些dllImports:
[DllImport("user32.dll", SetLastError := true)]
class method PostMessage(hWnd: IntPtr; Msg: UInt32; wParam, lParam: IntPtr): Boolean; external;
[DllImport("user32.dll", SetLastError := true)]
class method FindWindow(lpClassName, lpWindowName: String): IntPtr; external;
Run Code Online (Sandbox Code Playgroud)
在show方法中有这样的代码:
using p := new Process do
begin
p.StartInfo.UseShellExecute := true;
p.StartInfo.FileName := 'C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe';
p.Start();
end;
Run Code Online (Sandbox Code Playgroud)
在Hide方法中,下一个代码用于隐藏OSK:
var oskWindow := FindWindow("IPTip_Main_Window", nil);
var WM_SYSCOMMAND := 274;
var SC_CLOSE := 61536;
PostMessage(oskWindow, WM_SYSCOMMAND, SC_CLOSE, 0);
Run Code Online (Sandbox Code Playgroud)
更新:找到一个适用于Windows 7的工作解决方案....不适用于Windows 8(我需要什么)
这就是我在Windows 7中解决问题的方法:主要思想是在OSK类中,我在显示osk时启动Dispatchertimer.现在,如果osk窗口可见,则检查每秒.如果是这样,则会触发一个可以在多个地方处理的事件.(我还检查了计时器中的_firstshown布尔值,因为有时需要一段时间才能显示osk.
这是我如何做到的:首先我做了一个IsWindowVisible方法的dllImport
[DllImport("user32.dll", CharSet:=CharSet.Auto)]
class method IsWindowVisible(hWnd:IntPtr):Boolean; external; …Run Code Online (Sandbox Code Playgroud) 在Razor的视图中,我传递的模型包含具有Name和UseDescription属性的对象的列表('usageList').
在JQuery中我创建了一个滑块,我希望在更改滑块值时显示特定的UseDescription.
问题是在模型中的列表中获取特定对象.我有这个代码(JQuery):
<script type="text/javascript">
$(document).ready(function() {
$("#slider").slider({
min:1,
max:3,
value:1,
range:"min",
change: function(event,ui){
var number = ui.value;
alert("@Model.UsageList[ui.value].UseDescription");
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
在这一行中无法获得ui.value:
alert("@Model.UsageList[ui.value].UseDescription");
Run Code Online (Sandbox Code Playgroud)
如果我传入一个数字(1表示例子)而不是ui.value,那么工作正常.但我需要获得具体的列表对象.
非常感谢任何帮助.
我不确定这是否可行但是是否可以只在wpf datepicker中选择一个日期列表?
我需要确保使用只能从一定数量的日期中选择.我可以使用下拉列表执行此操作,但使用日期选择器会更好.
有任何想法吗?
datepicker ×1
dllimport ×1
javascript ×1
jquery ×1
razor ×1
slider ×1
tablet ×1
winapi ×1
windows-8 ×1
wpf ×1
wpf-controls ×1