【问题标题】:Handling keypress events in Silverlight在 Silverlight 中处理按键事件
【发布时间】:2011-02-22 16:01:45
【问题描述】:

我的应用需要在安全受限的浏览器中运行。因此,Silverlight 中的文本框输入被阻止(但 HTML 中没有)。我需要拦截击键并将它们放在文本框中以覆盖此功能。

当检测到按键事件时,它会返回全部大写的字母。 (为什么??)我需要能够将按键转换为小写,但无法访问 KeyEventArgs 中的转换状态。 PlatformKeyCode 应该返回 ascii(这是一个仅限英语/美国的应用程序),但它不检测 shift 状态并以大写返回所有小写键。这些文本框是用户名和密码输入,并且区分大小写。

我很难相信我不能做像获取用户名和密码这样简单的事情。

我无法控制 IE 浏览器的安全设置,因为它在由另一家公司编写的单独桌面应用程序中运行。该网站旨在与该桌面软件交互。该软件的作者不知道为什么 Silverlight 文本输入不起作用。文本框在普通浏览器中工作正常。

【问题讨论】:

    标签: silverlight silverlight-4.0


    【解决方案1】:

    使用Keyboard.Modifiers 值来确定是否按下了shift。

    ModifierKeys keys = Keyboard.Modifiers;
    bool shiftKey = (keys & ModifierKeys.Shift) != 0; 
    

    This blog 有此键和其他键的附加信息。

    请注意,按键事件告诉您按下的是什么键,而不是该键生成的字符。两者是有区别的。

    【讨论】:

    • 杰夫,非常感谢。这似乎成功了。很遗憾我必须手动编写一个将输入的字符放入文本框中的函数,但这是一个解决方案!
    • @Miguel:乐于助人。您可以获取关键事件但文本框本身无法接收它们似乎很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 2017-06-05
    • 2016-08-30
    相关资源
    最近更新 更多