Я сделал диаграмму на моей форме.
Я хочу, чтобы пользователь видел value
, x_value
и y_value
каждой части во всплывающей подсказке, щелкая по этой части.
Баллон должен исчезнуть, когда пользователь переместит мышь.
Как я могу это сделать?
Я сделал диаграмму на моей форме.
Я хочу, чтобы пользователь видел value
, x_value
и y_value
каждой части во всплывающей подсказке, щелкая по этой части.
Баллон должен исчезнуть, когда пользователь переместит мышь.
Как я могу это сделать?
Вы можете сделать что-то вроде этого:
ToolTip tooltip = new ToolTip();
Point? clickPosition = null;
void chart1_MouseMove(object sender, MouseEventArgs e)
{
if (clickPosition.HasValue && e.Location != clickPosition)
{
tooltip.RemoveAll();
clickPosition = null;
}
}
void chart1_MouseClick(object sender, MouseEventArgs e)
{
var pos = e.Location;
clickPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false,
ChartElementType.PlottingArea);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.PlottingArea)
{
var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X);
var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);
tooltip.Show("X=" + xVal + ", Y=" + yVal,
this.chart1, e.Location.X,e.Location.Y - 15);
}
}
}
Результат:
ИЗМЕНИТЬ:
чтобы отображать всплывающую подсказку при каждом движении мыши, вы можете использовать следующий код:
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false,
ChartElementType.PlottingArea);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.PlottingArea)
{
var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X);
var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);
tooltip.Show("X=" + xVal + ", Y=" + yVal, this.chart1,
pos.X, pos.Y - 15);
}
}
}
Обратите внимание, что это показывает всплывающую подсказку в любой позиции диаграммы. Если вы хотите показывать это только тогда, когда мышь находится рядом с точкой серии, вы можете использовать функцию mschart, например. :
yourSeries.ToolTip = "X=#VALX, Y=#VALY";
(дополнительные примеры здесь)
var pos = e.Location;
- person user2924019; 02.10.2016