小编Ger*_*ans的帖子

屏幕键盘关闭按钮事件?

在应用程序中,我在平板电脑上运行时使用屏幕键盘(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)

winapi dllimport tablet on-screen-keyboard windows-8

6
推荐指数
1
解决办法
4083
查看次数

如何在剃刀模型中的列表中获取特定项目

在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,那么工作正常.但我需要获得具体的列表对象.

非常感谢任何帮助.

javascript jquery slider razor

5
推荐指数
1
解决办法
1943
查看次数

WPF Datepicker仅生成可选日期列表

我不确定这是否可行但是是否可以只在wpf datepicker中选择一个日期列表?

我需要确保使用只能从一定数量的日期中选择.我可以使用下拉列表执行此操作,但使用日期选择器会更好.

有任何想法吗?

wpf datepicker wpf-controls

4
推荐指数
1
解决办法
7643
查看次数