2012-04-17 2 views
0

У меня есть приложение для Windows, в котором у меня есть две кнопки для перемещения элементов вверх и вниз в gridview.Кнопка должна работать как прокрутка вверх и вниз

But the problem is:

Клик событие вызывается только тогда, когда я отпускаю клавишу.

What I need:

событие клика должно срабатывать, когда я нажать и удерживать клавишу и должны остановиться, когда я отпускаю клавишу. означает что-то вроде прокрутки вверх и вниз.

ответ

1

На MouseDown события кнопки изменить некоторый элемент уровня класса, например

blnButtonPressed = ture; 

В MouseUp случай изменения

blnButtonPressed = false; 

кнопки и делать все, что вы делаете между этими двумя состояниями ....

+0

Где я должен выполнить промежуточную задачу ..? –

+0

Вы можете начать новый поток для своей задачи или начать работу с фоном для своей задачи, это поможет вам понять http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx – Adil

+0

Спасибо .. это сработало для меня ... –

1

Не используйте событие click. Используйте события MouseDown и MouseUp.

Или, если вы хотите иметь дело с нажатиями клавиш, используйте события KeyDown и KeyUp.

+0

Но я хочу выполнить задачу, пока нажата клавиша. –

0

Вы можете создать пользовательскую кнопку, которая будет повышаться. Нажмите кнопку evens при нажатии. Вот простой способ сделать это:

public class PressableButton : Button 
{ 
    private Timer _timer = new Timer() { Interval = 10 }; 

    public PressableButton() 
    { 
     _timer.Tick += new EventHandler(Timer_Tick); 
    } 

    private void Timer_Tick(object sender, EventArgs e) 
    { 
     OnClick(EventArgs.Empty); 
    } 

    protected override void OnMouseDown(MouseEventArgs mevent) 
    { 
     base.OnMouseDown(mevent); 
     _timer.Start(); 
    } 

    protected override void OnMouseUp(MouseEventArgs mevent) 
    { 
     base.OnMouseUp(mevent); 
     _timer.Stop(); 
    }  
} 

После кнопка была нажата, таймер начинает тикать каждые 10 мс (вы можете изменить интервал). В обработчике событий таймера эта кнопка вызывает событие Clieck.

Чтобы использовать его, просто скомпилируйте проект и перетащите его нажатием кнопки ToolBox в вашу форму.

Смежные вопросы