Keydown

Тема в разделе ".NET", создана пользователем rakot, 2 июн 2011.

  1. rakot

    rakot Member

    Регистрация:
    9 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    Уважаемые коллеги,подскажите начинающему решение такой вот,заурядной,вроде бы,проблемки
    на гриде надо отловить нажатие Enter для того чтобы перейти к ячейке с i+1 индексом,проблема в том что событие KeyDown грида ловит всё кроме этого самого Enter:
    вот код:
    private void grPlan_KeyDown(object sender, KeyEventArgs e)
    {
    try
    {

    if (e.KeyCode == Keys.Enter)
    {
    ProcessDialogKey(Keys.Tab);
    return;
    }
    }
    catch
    {
    }
    base.OnKeyDown(e);
    }
     
  2. TaTTDoGG

    TaTTDoGG Гость

    как проверяли?
    для начала попробуйте выполнить
    Код (Text):
    if (e.KeyCode == Keys.Enter)
    MessageBox.Show("Enter pressed...");
     
  3. rakot

    rakot Member

    Регистрация:
    9 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    проверял бряком,тоесть при нажатии Enter проскакивает мимо проверки
    но вот что интересно:не отрабатывает сей метод:
    if (keyData == Keys.Enter)
    {
    msg.WParam = new IntPtr(Convert.ToInt32(Keys.Tab));
    return base.ProcessCmdKey(ref msg, Keys.Tab);
    }
    else
    {
    return base.ProcessCmdKey(ref msg, keyData);
    }
    НО!
    работает вот этот:
    if (keyData == Keys.Enter)
    {

    SendKeys.Send("{TAB}");

    return base.ProcessCmdKey(ref msg, keyData);
    }
    else
    {
    return base.ProcessCmdKey(ref msg, keyData);
    }

    функционал выполнен но причину понять не могу-может кто-то подскажет
     
  4. TaTTDoGG

    TaTTDoGG Гость

    Код (C++):
    if (keyData == Keys.Enter)
    {
    keyData = Keys.Tab;
    msg.WParam = new IntPtr((int)Keys.Tab);
    }
    return base.ProcessCmdKey(ref msg, keyData);
    попробуй так
     
  5. rakot

    rakot Member

    Регистрация:
    9 июл 2009
    Сообщения:
    13
    Симпатии:
    0
    этот метод тоже отрабатывает,спасибо
    но всё же интересно в чем была проблема))будем разбираться
    спасибо.
     

Поделиться этой страницей