我有一个折线图,在绘制了足够的数据点后,数据将超过屏幕上可见的数据(因此图表仅显示最新数据)。发生这种情况时,我希望为X轴填充一个滚动条,允许用户使用滚动条查看以前的数据。
我该怎么做呢?我不希望用户能够拖动或缩放图表本身,只是为了单独使用滚动条在图表中导航。
我看过这篇文章:https://msdn.microsoft.com/en-us/library/dd456730.aspx但它没有帮助&滚动条不会出现。
答案 0 :(得分:0)
如果没有看到代码的相关部分,很难确定问题。
这是一个奇怪的陈述:
在绘制了足够的数据点后,数据将超过 屏幕上可见的内容(以便图表仅显示最新数据)。
现在只有在设置NaN
之后才会发生这种情况,因为默认情况下,当您添加点时,图表控件会越来越多地挤压该区域。
但是当你设置了可以显示的最大值时,没有滚动条可以工作甚至显示。听起来合乎逻辑,对吧?
因此要么不在第一时间设置它,要么在点数超过您想要显示的数量时将其清除。要清除它,请使用chart1.ChartAreas[0].AxisX.Maximum = Double.NaN;
:
chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;
或者,当然,将它设置为您想要显示的最后一点!
在查看了您不能做的事情后,让我们看看您需要做些什么才能显示滚动条:
首先启用它:
chart1.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
接下来,告诉它只显示滚动手柄而不是缩放重置按钮:
chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = false;
有关滚动条可以显示/执行的各种操作,请参阅MSDN on ScrollBarButtonStyles
。
并确保用户无法进行缩放设置:
ScaleView.MinSizeType
最后将当前范围设置为显示:
chart1.ChartAreas [0] .AxisX.ScaleView.Size = 111; // show 111 DataPoints
现在滚动条应显示。
研究AxisScaleView
class是个好主意,因为它有几个有用的属性..
根据您的X值的数据类型,您可能还需要将chart1.ChartAreas[0].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Number;
设置为适合您数据的任何内容:
string tblnm = "Vehicle";
SqlConnection conn;
using (conn = new SqlConnection(connection))
{
conn.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = @"IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='" + tblnm + "') SELECT 1 ELSE SELECT 0"; ;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
int x = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
if (x == 2)
{
MessageBox.Show("Lentelės yra");
}
else
{
MessageBox.Show("Lenteliu nėra.Sukuriama");
}