if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
即使第一个if语句为true并运行其代码,它也会运行&#34; else&#34;代码无论如何。 示例:v = 0,e.Delta = 120,因此第一个if语句为true并且有效,但我不知道为什么它运行else语句,当第二个if语句为时它不会运行真正。 感谢您的回答/建议!
答案 0 :(得分:1)
这两个if
是独立的。
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
您应该在第二个else
之前添加if
。像这样:
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
else if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
答案 1 :(得分:0)
您在第二行中缺少初始else
,
但更好的是使用三元运算符:
vScrollBar1.Value =
v - e.Delta <= 0? vScrollBar1.Minimum:
v - e.Delta >= vScrollBar1.Maximum? vScrollBar1.Maximum:
vScrollBar1.Value - e.Delta;
答案 2 :(得分:0)
两个if
都不同。你看,C#中条件的顺序是if-else if-else
。因此,将第二个if
设为else if
,您的逻辑应按预期运行。
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
else if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
De rien!