C#显示的值与调试器中的不同

时间:2014-10-23 11:55:37

标签: c# debugging zedgraph

简介

我使用ZedGraph在图表上显示曲线。我创建了十字线,显示了它在图例中所针对的点的价值。我可以用鼠标或键盘将十字准线从一个点移动到另一个点。

问题

当我用鼠标移动十字准线时,点值的显示是正确的。当我尝试用键盘移动它时,它会显示前一个斑点的值。当我使用调试器查看发生的情况时,它会显示正确的值。

实施例

让我们考虑5点曲线A(0,0); B(1,1); C(2,2); D(3,3); E(4,4)。如果我使用鼠标从A到B移动十字准线,则显示为y = 0 x = 0,并且在鼠标移动后为y = 1 x = 1。如果我使用键盘从B转到C,则显示保持在y = 1 x = 1(而调试器显示为y = 2 x = 2),如果我从C移到D,则显示为y = 2 x = 2而调试器为y = 3 x = 3 private void lineGraphControl1_KeyDown(Object sender, KeyEventArgs e) { bool first = false; bool second = false; if (e.Modifiers == Keys.Control && !showTwoCursor) { first = true; } else if (showTwoCursor) { if (crosshairList[0].Index < crosshairList[1].Index) { first = e.Modifiers == Keys.Control; second = e.Modifiers == Keys.Alt; } } if(first || second) { Crosshair crosshair = null; if (first) crosshair = crosshairList[0]; if (second) crosshair = crosshairList[1]; if (e.KeyCode == Keys.Left && crosshair.Index > 0) crosshair.Index--; else if (e.KeyCode == Keys.Right && crosshair.Index + 1 < curve.NPts) crosshair.Index++; else return; drawCursors(first, second, true); } } 说。如果我用鼠标从D移动到E,它会显示正确的值。

我该如何解决?

修改

绘图和图例是相同的功能,只是有一些区别,取决于谁叫这个功能。

这是键盘事件:

private bool lineGraphControl1_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e)
{

    // Draw the cursor near the mouse location.
    drawCursors(drawFirstCursor, drawSecondCursor, false, e.Location);
    return false;
}

和鼠标事件:

{{1}}

我没有看到有关刷新屏幕事件的任何信息......

1 个答案:

答案 0 :(得分:1)

使用Zedgraph,一些处理程序可以调用鼠标和键盘事件。

因此,当您使用键盘时,也可以调用鼠标事件,具体取决于您的处理程序。

这会产生你的错误。