- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 C# 开发一个简单的通用 Windows 应用程序。我有一个 RichEditBox,并且在使用 Control+I 组合键时发现了奇怪的行为,由于某种原因,它会插入一个 Tab(这是预期的吗?)。因为我想要组合键来切换斜体字体样式,所以我认为最好的方法是通过 KeyDown 事件。所以,这是我的代码:
private void richbox_KeyDown(object sender, KeyRoutedEventArgs e)
{
System.Diagnostics.Debug.Write("\nKeyDown : " + e.Key.ToString());
if (e.Key == VirtualKey.Tab)
{
richbox.Document.Selection.TypeText("\t");
e.Handled = true;
}
else if (Window.Current.CoreWindow.GetKeyState(VirtualKey.Control) == Windows.UI.Core.CoreVirtualKeyStates.Down)
{
//If Control is pressed down, check if current key is B,I,U...
System.Diagnostics.Debug.Write(" => Control is down!");
switch (e.OriginalKey)
{
case VirtualKey.B:
toogleBold();
e.Handled = true;
break;
case VirtualKey.I:
e.Handled = true;
toogleItalic();
break;
case VirtualKey.U:
toogleUnderline();
e.Handled = true;
break;
}
}
}
我的问题是,当我按下 Control 键时,Else If 上的条件并不总是为真。我想了解为什么以及我可以做些什么来解决它。如果我运行代码并按几次控制键,这就是输出:
KeyDown : Control => Control is down!
KeyDown : Control
KeyDown : Control => Control is down!
KeyDown : Control
...
提前致谢:)
最佳答案
我尝试了您的代码并使用调试器输出来查看这些情况下 Ctrl 的实际状态:
var state = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
Debug.WriteLine(state);
我发现,当你第二次按下该键时,它的状态不是Down,而是Down|Locked,更具体地说是Windows.UI .Core.CoreVirtualKeyStates.Down | Windows.UI.Core.CoreVirtualKeyStates.Locked
。事实证明,CoreVirtualKeyStates 是一个标志枚举,它可以同时具有多个值。在这种情况下,您正在与 ==
进行比较,这意味着您没有获得匹配项。您可以首先使用 HasFlag
方法或按位 AND (&
) 获取正确的值,然后进行比较,就可以开始了!
这意味着:
else if ( Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).
HasFlag( CoreVirtualKeyStates.Down ) )
{
//rest of the code
}
或者这个:
else if (
( Window.Current.CoreWindow.GetKeyState(VirtualKey.Control) &
Windows.UI.Core.CoreVirtualKeyStates.Down )
== CoreVirtualKeyStates.Down )
{
//rest of the code
}
关于C# - Window.Current.CoreWindow.GetKeyState 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784989/
嘿嘿, 我遇到了一个问题。我正在完成为完成游戏而必须做的所有最后测试,但现在我遇到了一个问题。每当我在竖屏模式下初始化游戏时,游戏都会切换为横屏模式,但 Window.Current.CoreWind
我正在使用 C# 开发一个简单的通用 Windows 应用程序。我有一个 RichEditBox,并且在使用 Control+I 组合键时发现了奇怪的行为,由于某种原因,它会插入一个 Tab(这是预期
我正在使用 C# 开发一个简单的通用 Windows 应用程序。我有一个 RichEditBox,并且在使用 Control+I 组合键时发现了奇怪的行为,由于某种原因,它会插入一个 Tab(这是预期
我正在尝试获取 CoreDispatcher在 Windows Phone 8 上的 C++ 中,以便我可以将工作项提交给 UI 线程 Dispatcher,以便我可以更新 UI 线程上的 UI 元素
CoreApplicationView有什么区别, CoreWindow , 和 ApplicationView ? 我可以看到每个应用程序都有不同的属性等,所以我不是在问“我应该使用哪个来获取 ab
我目前正在开发一个 Win8 项目,该项目使用 C# 和 XAML 作为应用程序的前端,使用带有 DirectX 的 C++ 作为图形密集型部分。因为它主要以实时图形和输入为中心,所以我决定使用为 C
这个简短的 MSDN 文档说 CoreWindow 有 ICoreWindowInterop 获取 CoreWindow 的句柄 HWND。但我找不到有关如何获取它的引用资料 (C#)。请帮忙。 ht
我正在尝试从 Windows Phone 8.1 C++ 运行时组件访问 CoreWindow。该组件需要对 CoreWindow 触发的一些事件使用react。我有以下代码。 IAsyncActio
当我在 UWP 应用程序中有一个文本框时(对我来说)有奇怪的行为。 在 Windows 10 中创建一个通用的空白应用 UWP 应用。 使用以下代码将文本框添加到默认网格: 构建并运行应用程序。 在
在 Windows 应用商店应用中,我们需要一个在设备方向改变时发生的事件。我发现了两个事件,有人知道它们之间有什么区别吗? Windows.UI.Core.CoreWindow.GetForCurr
我正在尝试通过 WH_CALLWNDPROC 上的 Hook 获取特定窗口的 Pointer Win32 消息, WH_CALLWNDPROCRET和 WH_GETMESSAGE . 我使用 SetW
我是一名优秀的程序员,十分优秀!