에서 x 축 스크롤 막대를 부착, 나는 코드의 나머지 부분은 변경되지 않습니다 동안 스크롤 할 수있는 내 툴팁 코드의 버전을 깨달았다. 두 툴팁 사용법의 유일한 차이는 마우스가있는 정확한 위치가 아니라 pos.x 값이 이동한다는 것입니다. 대신
/*X-axis Tooltip*/
tooltip.Show(Math.Truncate(xValue * 1000)/1000 + unit_Converter(), this.chart1, pos.X, pos.Y - 15);
수단
나는 모든 차이를했다이
/*X-axis Tooltip*/
tooltip.Show(Math.Truncate(xValue * 1000)/1000 + unit_Converter(), this.chart1, pos.X - 70, pos.Y - 15);
했다. 이제 X 축 스크롤 막대를 클릭하고 드래그 할 수 있습니다. 나는 Y 축을 항상 스크롤 할 수있는 이유가 15로 시작되었다고 생각합니다.
마우스 위치와 정확히 일치하는 툴팁 위치를 설정하면 스크롤하려고 할 때 스크롤 막대 대신 도구 설명 자체를 클릭하게됩니다.
"this.chart"대신 "this"를 사용하면 자동으로 툴팁이 약간 옮겨지기 때문에 Josh W가 제공하는 답변도 똑같이 유효합니다. 도와 주셔서 감사합니다!
[원래 질문]
I는 Y 축 및 X 축 스크롤바가있는 차트를 갖는다. 잠시 동안 두 스크롤바가 모두 작동했습니다. 코드가 커지면 X 축 스크롤 막대가 움직이지 않고 Y 축 스크롤 막대가 잘 움직입니다. 나는 당혹 스럽다. 어떤 도움을 주시면 감사하겠습니다. 같은
c# chart control, vertical scrolling problems with zoom ["Stuck Scroll bar"]
그러나 X 축 스크롤로
내가 언급 한 다른 답변은 여전히 붙어 ....
[편집] : 나는 마우스 이동 코드에 내 툴팁는 것을 깨달았다 이 원인. 내 마우스 이동 코드에 대한 호출을 비활성화하면 X 축 스크롤 막대가 다시 작동합니다. 그러나 어떻게하면 둘 다 기능 할 수 있도록 만들 수 있습니까? 정말 ... Y 축를 크로스 에어 툴팁 만 X 축에 스크롤을 해제 할 방법을 알고 있지만하지 않는
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
_point.X = e.Location.X;
_point.Y = e.Location.Y;
try
{
if ((chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X) >= 0) && (chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X) <= max))
{
//Crossair
chart1.ChartAreas[0].CursorX.SetCursorPixelPosition(_point, true);
//Tooltips
double xValue = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
/*X-axis Tooltip*/
tooltip.Show(Math.Truncate(xValue * 1000)/1000 + unit_Converter(), this.chart1, pos.X, pos.Y - 15);
}
}
catch (Exception exception)
{
}
}
시리즈 설정을 설정하려면 코드 :
var series = chart1.ChartAreas[chart1.Series[iname].ChartArea];
//Line thickness
chart1.Series[iname].BorderWidth = 2;
series.AxisX.Minimum = 0;
series.AxisX.Maximum = max;
series.AxisY.Minimum = 0;
series.AxisY.Maximum = checkedListBox1.CheckedItems.Count * 3 - 2;
series.AxisX.MajorGrid.Interval = time_of_cycle;
series.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.DashDotDot;
series.AxisY.MajorGrid.Interval = 2;
series.CursorX.Interval = 0;
series.CursorY.Interval = 0;
series.AxisX.ScaleView.SmallScrollSize = time_of_cycle /100 ;
series.AxisY.ScaleView.SmallScrollSize = 1;
//Disables Y axis lable
series.AxisY.LabelStyle.Enabled = false;
series.AxisX.LabelStyle.ForeColor = Color.White;
series.AxisY.LabelStyle.ForeColor = Color.White;
series.AxisX.LabelStyle.Format = label_Style_Converter();
series.AxisX.LabelStyle.Interval = time_of_cycle * 2;
series.AxisX.MajorGrid.LineColor = Color.DimGray;
series.AxisY.MajorGrid.LineColor = Color.DimGray;
series.AxisX.ScrollBar.BackColor = Color.LightGray;
series.AxisY.ScrollBar.BackColor = Color.LightGray;
series.AxisX.ScrollBar.ButtonColor = Color.LightGray;
series.AxisY.ScrollBar.ButtonColor = Color.LightGray;
series.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
series.AxisY.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
series.AxisX.ScrollBar.Enabled = true;
series.AxisY.ScrollBar.Enabled = true;
series.AxisX.ScrollBar.IsPositionedInside = false;
series.AxisY.ScrollBar.IsPositionedInside = false;
series.AxisX.IsMarginVisible = true;
series.AxisY.IsMarginVisible = false;
series.AxisX.Name = "µs";
series.AxisX.ScaleView.Size = max - time_of_cycle/100;
series.AxisY.ScaleView.Size = (checkedListBox1.CheckedItems.Count * 3 - 2) + 1 ;
series.BackColor = Color.Black;
//crosshair
var cursor_Y = chart1.ChartAreas["ChartArea1"].CursorY;
var cursor_X = chart1.ChartAreas["ChartArea1"].CursorX;
cursor_Y.LineWidth = 1;
cursor_Y.LineDashStyle = ChartDashStyle.Solid;
cursor_Y.LineColor = Color.DarkRed;
cursor_Y.SelectionColor = Color.LightGray;
cursor_X.LineWidth = 1;
cursor_X.LineDashStyle = ChartDashStyle.Solid;
cursor_X.LineColor = Color.DarkRed;
chart1.MouseMove += new MouseEventHandler(chart1_MouseMove);
제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –