نقل قول نوشته شده توسط hamed.re مشاهده تاپیک
سلام یه برنامه دارم که اطلاعات رو روی نمودار نمایش میده قسمت Y عدد و قسمت X تاریخ شمسی هست. وقتی اطلاعات X رو به صورت String وارد نمودار میکنم شکل نمودار درست ولی نمیتونم مقدارشو موقع حرکت موس بدست بیارم چون نوعش String از طرف دیگه وقتی وقتی اطلاعات X رو به صورت DateTime وارد نمودار میکنم شکل نمودار به هم میریزه و به اصطلاح کشیده میشه. دیگه نمیدونم چیکار کنم خواهشا اگر کسی اطلاعی داره بگه چیکار کنم. در ضمن نمودار هم MSChart هست.

در مورد مشکلی که در نمودار خود دارید، دلیل آن ممکن است این باشد که شما مقدار X را به عنوان یک رشته String به نمودار می‌دهید در حالی که محور X باید به عنوان یک محور زمانی (DateTime) تعریف شود. به همین دلیل، شکل نمودار شما به هم می‌ریزد. برای رفع احتمالی مشکل در پروژه شما این کد را تست نمائید.
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
if (ismiddlebuttonclick)
{
label_VE.Visible = true;
label_HO.Visible = true;
label_VAL.Visible = true;


label_HO.Location = new Point(76, e.Y);
label_VE.Location = new Point(e.X, 21);


if (e.X <= 83 || e.Y >= 435 || e.Y <= 27 || e.X >= 852)
{
label_VE.Visible = false;
label_HO.Visible = false;
label_VAL.Visible = false;
}
else
{
label_VE.Visible = true;
label_HO.Visible = true;
label_VAL.Visible = true;
}


try
{
double yValue = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
string xString = chart1.Series[0].Points[(int)Math.Round(chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X))].AxisLabel;
DateTime xValue = DateTime.ParseExact(xString, "yyyy-MM-dd", CultureInfo.InvariantCulture);
chart1.Series[0].Points.AddXY(xValue, yValue);
label_VAL.Text = string.Concat(Math.Round(yValue, 1).ToString(), " , ", xValue.ToString());
label_VAL.Location = new Point(863, e.Y - 5);
}
catch (Exception ex)
{
MessageBox.Show("خطا در نشانگر: " + ex.Message, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
else
{
label_VE.Visible = false;
label_HO.Visible = false;
label_VAL.Visible = false;
return;
}
}