protected internal override void KeyDown(InputEventKeyboard e) { lock (RenderRule) { if (RenderRule.Length != 0) { switch (e.KeyCode) { case WinKeys.Left: RenderRule.TextCursor--; RenderRule.SelectedChar = null; break; case WinKeys.Right: RenderRule.TextCursor++; RenderRule.SelectedChar = null; break; case WinKeys.Up: RenderRule.CursorUp(); RenderRule.SelectedChar = null; break; case WinKeys.Down: RenderRule.CursorDown(); RenderRule.SelectedChar = null; break; case WinKeys.Home: RenderRule.CursorHome(); RenderRule.SelectedChar = null; break; case WinKeys.End: RenderRule.CursorEnd(); RenderRule.SelectedChar = null; break; case WinKeys.PageUp: RenderRule.TextCursor = 0; RenderRule.SelectedChar = null; break; case WinKeys.PageDown: RenderRule.TextCursor = RenderRule.Length; RenderRule.SelectedChar = null; break; case WinKeys.Delete: RenderRule.Delete(); RenderRule.BakeText(); RenderRule.SelectedChar = null; break; } } } ResetTimer(); }
protected internal override void OnLayout() { if (Area != Parent.InputArea) { var a = Parent.InputArea; Area = new Rectangle(0, 0, a.Width, a.Height); } RenderRule.BakeText(); }
internal override void Layout() { RenderRule.BakeText(); base.Layout(); }
protected internal override void CharEntered(CharacterEventArgs e) { var ch = e.Character; lock (RenderRule) { switch (ch) { case '\b': { //Backspace <= remove selected or remove before cursor if (RenderRule.HasSelected) { RenderRule.RemoveSelected(); } else { RenderRule.BackSpace(); } break; } case '\n': case '\r': { //New Line <= Insert character after cursor if (RenderRule.HasSelected) { RenderRule.RemoveSelected(); } RenderRule.Insert(ch); break; } case '\t': { //Tabs currently not supported return; } case (char)3: { //Copy Clipboard.SetDataObject(RenderRule.GetSelected(), true); break; } case (char)22: { //Paste if (RenderRule.HasSelected) { RenderRule.RemoveSelected(); } var dataObject = Clipboard.GetDataObject(); if (dataObject != null) { var text = dataObject.GetData(DataFormats.Text).ToString(); RenderRule.Insert(text); } break; } case (char)24: { //Cut if (RenderRule.HasSelected) { Clipboard.SetDataObject(RenderRule.GetSelected(), true); RenderRule.RemoveSelected(); } break; } default: { //Add the character if (RenderRule.HasSelected) { RenderRule.RemoveSelected(); } RenderRule.Insert(ch); RenderRule.SelectedChar = null; break; } } RenderRule.BakeText(); } ResetTimer(); }