Проблема с Ctrl
От: Strokulist  
Дата: 27.01.07 22:15
Оценка:
Здравствуйте!
Буду очень благодарен,если кто-нибудь поделится решением следующей задачи:
в RichTextBox повесил обработчики на комбинации ctrl+z и ctrl+y — "Отменить" и "Повторить",как в стандартном текстовом редакторе:

void SyntaxBox_KeyDown(object sender, KeyEventArgs e)
{
...
else if ((e.Modifiers==Keys.Control) && (e.KeyCode == Keys.Z))
{
...
}
else if ((e.Control) && (e.KeyCode == Keys.Y))
{
...
}
...
}

Так если нажать ctrl+z,чтоб отменить действие,затем ctrl и z отпустить и нажать ctrl+y,комбинация ctrl+y нужные действия ("Повторить действие") не вызовет,а если при нажатии
ctrl+z отпустить только z,а ctrl не отпускать и затем нажать y,то комбинация ctrl+y сработает.
Кто знает,в чем загвоздка?
Спасибо за внимание.

28.01.07 11:47: Перенесено модератором из '.NET' — AndrewVK
Re: Проблема с Ctrl
От: mikeduglas  
Дата: 29.01.07 07:59
Оценка:
Здравствуйте, Strokulist, Вы писали:

S>Здравствуйте!

S>void SyntaxBox_KeyDown(object sender, KeyEventArgs e)
S>{ 
S>    ...
S>    else if ((e.Modifiers==Keys.Control) && (e.KeyCode == Keys.Z))
S>    {
S>    ...
S>    }
S>    else if ((e.Control) && (e.KeyCode == Keys.Y))
S>    {
S>        ...
S>    }
S>    ...
S>}


S>Так если нажать ctrl+z,чтоб отменить действие,затем ctrl и z отпустить и нажать ctrl+y,комбинация ctrl+y нужные действия ("Повторить действие") не вызовет,а если при нажатии

S>ctrl+z отпустить только z,а ctrl не отпускать и затем нажать y,то комбинация ctrl+y сработает.
S>Кто знает,в чем загвоздка?
S>Спасибо за внимание.

Так у тебя ж они по-разному определяются (смотри выделенное)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Проблема с Ctrl
От: Strokulist  
Дата: 29.01.07 17:17
Оценка:
Здравствуйте!

S>>void SyntaxBox_KeyDown(object sender, KeyEventArgs e)

S>>{
S>> ...
S>> else if ((e.Modifiers==Keys.Control) && (e.KeyCode == Keys.Z))
S>> {
S>> ...
S>> }
S>> else if ((e.Control) && (e.KeyCode == Keys.Y))
S>> {
S>> ...
S>> }
S>> ...
S>>}

S>>Так если нажать ctrl+z,чтоб отменить действие,затем ctrl и z отпустить и нажать ctrl+y,комбинация ctrl+y нужные действия ("Повторить действие") не вызовет,а если при нажатии

S>>ctrl+z отпустить только z,а ctrl не отпускать и затем нажать y,то комбинация ctrl+y сработает.
S>>Кто знает,в чем загвоздка?
S>>Спасибо за внимание.

M>Так у тебя ж они по-разному определяются (смотри выделенное)


mikeduglas,не имеет значения!Если я не ошибаюсь, (e.Modifiers==Keys.Control) и (e.Control) равнозначны.Даже если это не так,я пробовал вышестоящий код со строкой ((e.Control) && (e.KeyCode == Keys.Z)) — эффект,к сожалению,тот же!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.