private static void ItemsControlPreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { var itemsControl = sender as ItemsControl; if (itemsControl != null) { var clickedItemReference = itemsControl.GetMultiSelectDragDropDraggedItem(); itemsControl.SetMultiSelectDragDropDraggedItem(null); var item = clickedItemReference.GetClickedItem(); if ((item != null) && itemsControl.IsMouseCaptured) { e.Handled = true; itemsControl.ReleaseMouseCapture(); if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) { item.ToggleIsSelected(); } else { var listView = itemsControl as ListView; var indexOfItem = listView.SelectedItems.IndexOf(item.DataContext); if ((listView != null) && ((indexOfItem < 0) || (listView.SelectedItems.Count > 1))) { var numItems = listView.SelectedItems.Count; if (indexOfItem < 0) { for (var i = 0; i < numItems; ++i) { listView.SelectedItems.RemoveAt(0); } } else { for (var i = indexOfItem + 1; i < numItems; ++i) { listView.SelectedItems.RemoveAt(indexOfItem + 1); } for (var i = 0; i < indexOfItem; ++i) { listView.SelectedItems.RemoveAt(0); } } } item.SetIsSelected(true); } if (!item.IsKeyboardFocused) { item.Focus(); } } } }
private void glWindow_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { switch (e.Button) { case MouseButtons.Middle: lastMousePosition_[0] = e.X; lastMousePosition_[1] = e.Y; if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) { isTranslation_ = true; } else { isRotation_ = true; } break; case MouseButtons.Left: bool isNewSelection = true; if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) || isEditSelection_) { isNewSelection = false; } Tuple <Vector3d, string, string> info = modelRenderer_.select(e.X, e.Y, isNewSelection); if (info == null) { return; } modelRenderer_.draw(); // Show the information about the selection const string format = "G6"; setStatus("Coordinates of " + info.Item2 + selectionDelimiter_ + info.Item3 + " = (" + info.Item1.X.ToString(format, CultureInfo.InvariantCulture) + "; " + info.Item1.Y.ToString(format, CultureInfo.InvariantCulture) + "; " + info.Item1.Z.ToString(format, CultureInfo.InvariantCulture) + ")"); break; case MouseButtons.Right: glContextMenu.Show(Cursor.Position.X, Cursor.Position.Y); break; } }
private void HotkeyPressed(object sender, HandledEventArgs e) { if (itemsListView.Items.Count == 0) { MessageBox.Show("You have to add some strings to the list first.", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var endKey = Keys.None; if (endsWithComboBox.SelectedIndex > 0) { Enum.TryParse(endsWithComboBox.SelectedItem.ToString(), out endKey); } var s = GetNextCode() + (crlfCheckBox.Checked ? Char.ConvertFromUtf32(13) + Char.ConvertFromUtf32(10) : String.Empty); while (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) || Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl) || Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)) { Thread.Sleep(10); } // do the delayed key sending in a separate thread so we don't hang the window ThreadStart starter = () => StartSending(s, (int)delayNumeric.Value, endKey); var t = new Thread(starter) { Name = "Sending keys " + s }; t.Start(); }
public bool IsKeyDown(Keys vKey) { return(KB.IsKeyDown(vKey)); }