Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 22:19   #1
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию SourceGrid и KeyDown

Пишу программу на C#.Для вывода данных использую SourceGrid,компонент Grid. Все замечательно,кроме одного момента... После добавления Grid на форму перестают работать события KeyDown и KeyUp... Они мне необходимв как воздух...
З.Ы. Проверял,работают события без Грида,с ним не работают.Что делать? Может кто-нибудь встречался с такой проблемой?
З.З.Ы. Устанавливал последнюю версию с оф. сайта-не помогло.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 12.11.2010, 22:26   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Это WinForms? Если да, я не уверен, но там случаем нет событий типа PreviewKeyDown и т.п. с префиксом Preview?
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2010, 08:48   #3
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Есть PreviewKeyDown,это единственное,что там есть из событий Key.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 14.11.2010, 15:18   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Решил проблему так:
Код:
[Flags]
        private enum KeyStates
        {
            None = 0,
            Down = 1,
            Toggled = 2
        }

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern short GetKeyState(int keyCode);

        private static KeyStates GetKeyState(Keys key)
        {
            KeyStates state = KeyStates.None;

            short retVal = GetKeyState((int)key);

            //If the high-order bit is 1, the key is down
            //otherwise, it is up.
            if ((retVal & 0x8000) == 0x8000)
                state |= KeyStates.Down;

            //If the low-order bit is 1, the key is toggled.
            if ((retVal & 1) == 1)
                state |= KeyStates.Toggled;

            return state;
        }

        public static bool IsKeyDown(Keys key)
        {
            return KeyStates.Down == (GetKeyState(key) & KeyStates.Down);
        }

        public static bool IsKeyToggled(Keys key)
        {
            return KeyStates.Toggled == (GetKeyState(key) & KeyStates.Toggled);
        }
После этого кинул таймер и проверяю нажата ли клавиша,которая мне нужна...Извращение,но ничего лучше не придумал.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 14.11.2010, 15:18   #5
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Если кто-нибудь придумает что-то получше-отзовитесь..)
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напомните Case по KeyDown Alex Cones Общие вопросы Delphi 2 10.07.2010 12:09
Не работает процедура KeyDown\Up в Дельфи DeKot Общие вопросы Delphi 7 29.10.2009 17:54
Программирование событий KeyPress, KeyDown,KeyUp. TwEEkcs Общие вопросы Delphi 1 09.09.2009 17:00
Долгое нажатие клавиши в KeyDown как одно нажатие marina15056 Общие вопросы Delphi 7 16.08.2009 00:22
Использование проц. KeyDown для DBGrid Максим_Леонидович Общие вопросы Delphi 3 22.07.2008 03:31