【发布时间】:2014-07-31 15:35:10
【问题描述】:
假设您有一个 HScrollBar。还可以说您可能想要取消滚动并返回到以前的值。例如,您的滚动条值为 3。现在用户单击滚动条来推进一个值(largechange 和 smallchange 都设置为 1)。您按如下方式处理滚动事件:
// Global sheet number containing current sheet number
int sheetNum;
private void hsbSheet_Scroll(object sender, ScrollEventArgs e)
{
// Process only the EndScroll Event
if (e.Type == ScrollEventType.EndScroll)
{
// Validation
if (!checkValidation())
{
// Rollback Scroll Value
hsbSheet.Value = sheetNum;
hsbSheet.Update();
// Exit
return;
}
// Process Scroll
processScroll();
}
}
如果出现验证错误,滚动值会返回到之前的值。在这个例子中,用户试图将滚动条的值设置为 4。但由于出现验证错误,滚动值又回到了 3。现在如果他再次点击滚动条,现在的值是 5!现在我的问题来了,在重置为 3 后,如何阻止值以这种方式累积?也就是说,当他再次点击滚动条进行增量时,应该又是4了。
先谢谢了。
更新 #1
我正在尝试一切:
...
// Rollback Scroll Value
hsbSheet.Value = sheetNum;
hsbSheet.Refresh();
hsbSheet.ResetText();
hsbSheet.Update();
...
它仍然有同样的问题......
【问题讨论】:
标签: winforms