我有一个来自TrackBar
的自定义Devexpress
控件
我需要根据TrackBar
的选定值对图像执行一些长时间运行的Background操作。但是在选择/拖动过程中,事件不应以20的间隔触发20次,而应仅在最终位置触发。
目前,我采用以下方法
private void trackBar1_MouseUp(object sender, EventArgs e)
{
value+= trackBar1.Value;
if ((value> 0) && (newvalue != oldvalue))
{
longworker.RunWorkerAsync();
oldvalue = newvalue;
}
}
private void trackBar1_EditValueChanged(object sender, EventArgs e)
{
newvalue = trackBar1.Value;
}
这很好用,但是用户需要将鼠标移出控件才能触发事件。
有办法解决这个问题吗?
答案:DevExpress.XtraEditorsTrackBarControl提供了一种方法,但是自定义控件没有滚动事件。
答案 0 :(得分:0)
您可以检查当前鼠标位置是否在轨迹栏边界之外,以执行必要的代码:
private void trackBar1_MouseUp(object sender, EventArgs e) {
value += trackBar1.Value;
if(value > 0 && newvalue != oldvalue) {
longworker.RunWorkerAsync();
oldvalue = newvalue;
}
else if(!trackBar.ClientRectangle.Contains(e.Location)) {
//your code here
}
}