Как сделать метод, содержащий обращение, экземплярным
-
11 апреля 2012 г. 7:25
Всем привет, долго гуглил этот вопрос, пробовал, но так и не решил.
Приведу код, он реализует перехват клавиши, в то время, как программа не активна (не в фокусе):
static class Hook { [DllImport("user32.dll")] private static extern IntPtr SetWindowsHookEx(int idHook, LowLevel_KeyboardProc Ipfn, IntPtr hMod, uint dwThreadId); ***************** private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WH_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); if (vkCode == 123)
timers.enabled=true;
и вот когда пытаюсь обратиться к свойствам таймера timers.enabled=true, появляется ошибка -
Error 4 An object reference is required for the non-static field, method, or property 'MyProj.Form1.timer' n:\proj\mainf.csпоискав в интернете, я нашел что нужно сделать метод, содержащий это обращение, экземплярным, а вот как это сделать?
Спасибо
Все ответы
-
11 апреля 2012 г. 9:09Модератор
У Вас поле timer объявлено как static? Если так то надо инициализировать его так
static System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
или поместить инициализацию в статический конструктор. А чтобы сделать поле нестатическим надо убрать модификатор static при объявлении.
- Помечено в качестве ответа Abolmasov DmitryMicrosoft Community Contributor 12 апреля 2012 г. 9:13
-
11 апреля 2012 г. 9:15
- Помечено в качестве ответа Abolmasov DmitryMicrosoft Community Contributor 12 апреля 2012 г. 9:13
-
11 апреля 2012 г. 10:04
Точно ли метод HookCallback должен быть статичным?
Пожалуйста, не забудьте отметить сообщение, которое решило вашу проблему (кнопка 'Пометить как ответ' под сообщением).
Спасибо.
Для связи [mail]

