我正在开发一个非常基本的 C# Visual Studio 表单应用程序,但在让轨迹栏按照我想要的方式运行时遇到一些问题,因此希望社区中的某个人可以为此提供解决方案。
我所拥有的是一个非常基本的应用程序,主要部分是一个值为 0 到 100 的轨迹栏。用户设置轨迹的值来表示“要执行的工作量”,此时程序将达到一些设备并告诉它们做“x”量的工作(x 是轨迹栏的值)。因此,我所做的就是使用轨迹栏滚动事件来捕获轨迹栏值何时发生更改,并在处理程序内部调用设备并告诉它们需要完成多少工作。
我的问题是,我的事件处理程序会为跟踪栏当前所在位置和结束位置之间的每个值调用。因此,如果它从 10 滑动到 30,我的事件处理程序将被调用 20 次,这意味着我正在联系我的设备并告诉它们以我什至不希望它们运行的值运行。是否只有在滚动停止发生时才发生事件,以便您可以检查最终值?
如果用户单击了轨迹栏,只需检查一个变量。如果是这样,则延迟输出。
bool clicked = false;
trackBar1.Scroll += (s,
e) =>
{
if (clicked)
return;
Console.WriteLine(trackBar1.Value);
};
trackBar1.MouseDown += (s,
e) =>
{
clicked = true;
};
trackBar1.MouseUp += (s,
e) =>
{
if (!clicked)
return;
clicked = false;
Console.WriteLine(trackBar1.Value);
};
对于@roken提到的问题,你可以设置LargeChange
and SmallChange
to 0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)