Проверьте, не нажата ли клавиша Ctrl с помощью С#
У меня есть форма, которую пользователь может дважды щелкнуть мышью, и он что-то сделает. Теперь я хочу знать, поддерживает ли пользователь клавишу Ctrl, когда пользователь дважды кликает по форме.
Как узнать, удерживает ли пользователь клавишу Ctrl?
Ответы
Ответ 1
Используя .NET 4, вы можете использовать что-то простое:
private void Control_DoubleClick(object sender, EventArgs e)
{
if (ModifierKeys.HasFlag(Keys.Control))
{
MessageBox.Show("Ctrl is pressed!");
}
}
Если вы не используете .NET 4, то доступность Enum.HasFlag
отменяется, но для достижения того же результата в предыдущих версиях:
private void CustomFormControl_DoubleClick(object sender, EventArgs e)
{
if ((ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Ctrl is pressed!");
}
}
Ответ 2
Просто для полноты... ModifierKeys
является статическим свойством Control
, поэтому вы можете протестировать его, даже если вы не находитесь непосредственно в обработчике событий:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) == Keys.Control;
}
Ответ 3
Это не совсем ответ на поставленный вопрос, но мне нужно было сделать это в консольном приложении, и детали были немного другими.
Мне пришлось добавить ссылки на WindowsBase
и PresentationFramework
, и в этот момент я мог сделать:
if (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Control)
blah
Просто добавьте это здесь на тот случай, если кто-то делает что-то подобное.
Ответ 4
Даже это также
private void Control_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (ModifierKeys == Keys.Control)
MessageBox.Show("with CTRL");
}
Ответ 5
Тот же soneone, о котором говорилось выше, но сравнивающийся как отличный от нуля, который должен быть немного быстрее и использовать меньше инструкций для большинства архитектур:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) != 0;
}
Ответ 6
Это работает для меня:
if(Keyboard.IsKeyDown(Key.LeftCtrl))
{}
И добавьте ссылки на PresentationCore и WindowsBase