I m working on C# and XAML for metro applications. I have a textbox and I want that once enter is pressed in that textbox a new textbox appears. But instead of just one textbox, I m getting two textboxes. I did debugging also n realized that its triggerd twice. Not able to figure out why it is triggerd twice.
here is some code of my application
private void TextBox_KeyDown_1(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Enter)
{
//code for producing textbox
}
}
when i m debugging, once the above block is executed, it going to LayoutAwarePage.cs
and the control is sent to ths code snippet
private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
AcceleratorKeyEventArgs args)
{
var virtualKey = args.VirtualKey;
if ((args.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
args.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
(virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
(int)virtualKey == 166 || (int)virtualKey == 167))
{
var coreWindow = Window.Current.CoreWindow;
var downState = CoreVirtualKeyStates.Down;
bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
bool noModifiers = !menuKey && !controlKey && !shiftKey;
bool onlyAlt = menuKey && !controlKey && !shiftKey;
if (((int)virtualKey == 166 && noModifiers) ||
(virtualKey == VirtualKey.Left && onlyAlt))
{
// When the previous key or Alt+Left are pressed navigate back
args.Handled = true;
this.GoBack(this, new RoutedEventArgs());
}
else if (((int)virtualKey == 167 && noModifiers) ||
(virtualKey == VirtualKey.Right && onlyAlt))
{
// When the next key or Alt+Right are pressed navigate forward
args.Handled = true;
this.GoForward(this, new RoutedEventArgs());
}
}
}
once ths code block is done, the control is sent back to the function TextBox_KeyDown_1. I m nt able to understand why on the first place control is sent to layoutawarepage.cs . This code was generated when i added SplitPage in my project.
I had the same problem, and found the following article on MSDN which says MS is aware of the bug and has filed it in their internal database. The suggestion of handling KeyUp instead of KeyDown worked for my situation.