我制作了两个按钮,用于控制DataGrid OnClick上的滚动。我想在用户按下它时执行管理滚动的代码。
我试过MouseDown(),但代码只执行一次。
需要帮助。
答案 0 :(得分:4)
答案 1 :(得分:1)
如果您不想使用计时器,则可以在需要时始终生成线程。在使用另一个线程上的UI控件时,您只需要小心使用Invoke()机制。
代码:
private bool mouseDown = false;
private void buttonScrollUp_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
new Thread(() => {
while (mouseDown)
{
Invoke(new MethodInvoker(() => [DO_THE_SCROLLING_HERE));
Thread.Sleep([SET_AUTOREPEAT_TIMEOUT_HERE);
}
})
.Start();
}
private void buttonScrollUp_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
上面的代码片段当然缺乏一些理智和错误。
LP, 德扬
答案 2 :(得分:0)
主要思想是实现计时器,例如每100毫秒,并在tick事件中执行你的逻辑。算法看起来像: