5

我确信这有一个直截了当的答案,但我似乎无法弄清楚。

我正在尝试tooltip使用我的mousehover事件添加一个。从历史上看,我曾使用过该mousemove事件,但不幸的是,这意味着tooltip程序会尽快更新。我只想让它显示鼠标何时静止在我的图表上。

问题是我无法获取该e.Location属性,因为事件处理程序只使用EventArgs,而不是MouseEventArgs。有什么办法可以改变这个吗?或者可能添加一行MouseEventArgs mouse = new MouseEventArgs();(我收到一个错误,说它需要更多参数,但我不知道是哪个)。

任何帮助表示赞赏:)

        private void chSysData_MouseHover(object sender, EventArgs e)
        {
            //Add tooltip
            try
            {
                int cursorX = Convert.ToInt32(chSysData.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X));
                tipInfo = "System: " + systemVoltage[cursorX].ToString("0.00") + Environment.NewLine + "Current: " + currArray[cursorX].ToString("0.00") + Environment.NewLine;
                tooltip.SetToolTip(chSysData, tipInfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
4

1 回答 1

8

将 Cursor.Position 属性映射到您的图表。带有面板的示例:

    private void panel1_MouseHover(object sender, EventArgs e) {
        var pos = panel1.PointToClient(Cursor.Position);
        toolTip1.Show("Hello", panel1, pos);
    }

请注意,这与使用 toolTip1.Show("Hello", panel1); 没有其他不同。但您可能需要调整工具提示位置,使其不会被光标重叠。

于 2013-07-05T18:11:13.800 回答