我在usercontrol中定义了一个KeyDown事件。按Enter键时,它会起作用。我希望它还能处理 ctrl + v 组合键,以便粘贴复制的文本并执行某些操作。 说明:我的KeyDown事件处理程序接收到一个按下的键,如果它是Enter,它获取该控件中的当前焦点(例如,专注于某些textBox),检查TextBox“X”中是否有任何数据,如果是,另一个TextBox是自动完成的。我需要在TextBox“X”中插入文本时,自动完成TextBox的其余部分。如何强制程序并执行插入并执行我的自动完成代码?
private async void OnKeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key != VirtualKey.Enter) return;
var focusedElement = FocusManager.GetFocusedElement();
if (focusedElement == LocationName || focusedElement == AddressTextBox ||
focusedElement == Latitude || focusedElement == Longitude)
{
e.Handled = true;
}
if (IsAddressTextValid)
{
var mapLocation = await FindFirstMapLocationAsync(AddressTextBox.Text);
if (mapLocation != null)
{
LatitudeText = mapLocation.Point.Position.Latitude.ToString();
LongitudeText = mapLocation.Point.Position.Longitude.ToString();
}
}
}
答案 0 :(得分:2)
要处理 Ctrl + V ,实际上Justin有post可以提供帮助。
Window.Current.CoreWindow.KeyDown += (s, e) =>
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.V)
{
// do your stuff
Debug.WriteLine("ctrl+V has been triggered");
}
if(e.VirtualKey==VirtualKey.Enter)
{
Debug.WriteLine("Enter triggered");
}
};
但是对于如何强制更新其他文本框,不太确定你的逻辑。更改文本不适合您?