图表不显示数组值

时间:2014-04-08 13:23:01

标签: c# arrays charts datasource output

我有一个文件,用于保存用户的统计信息。该文件有2行。我有一个示例文件,其中包含以下内容“23 \ n48”。 我将它加载到一个字符串数组并将其返回到我的图表的DataSource。 一旦我使它工作但现在它没有显示任何改变了一些属性后按ctrl + z取消更改但我确信源代码没有任何改变。 现在它保持空白,就像它的DataSource是NULL一样。 我删除了图表并重新初始化它,而没有更改它的属性,除了将chartType设置为“pie”但没有帮助。我用调试器检查了图表的源代码,它具有文件的值。但我不明白为什么它在搜索几个小时后不再显示给我。我知道它适用于数组,因为我做了一次所以请不要告诉我我也可以尝试其他类型的数据,如DataTable。我现在有点好奇:P

这是我输入的内容:

chart1.DataSource = File.ReadAllLines("Stats/" + sender.toString());

Method ReadAllLines返回带有值的字符串数组。我也试过转换并将它放入一个int数组但仍然没有结果:(

我希望我提供有关我的问题的足够信息。 对不起,如果我的英语不好。这不是我的主要语言。

哦,我正在使用Visual Studio 2012和C#作为语言

致敬(新手)ExSynth:)

编辑(已解决): 这是我的源代码的更大片段:

private void Form1_Load(object sender, EventArgs e)
{
    if (!Directory.Exists("Languages")) { Directory.CreateDirectory("Languages"); }
    if (!Directory.Exists("Stats")) { Directory.CreateDirectory("Stats"); }
    RefreshLanguages();
}

private void spracheHinzufügenToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (!Directory.Exists("Languages")) { Directory.CreateDirectory("Languages"); }
    Add_Language Add_Language = new Add_Language();
    Add_Language.ShowDialog();
    RefreshLanguages();
}

private void RefreshLanguages()
{
    int j = spracheAuswählenToolStripMenuItem.DropDownItems.Count;
    for (int i = 0; i < j; i++) { spracheAuswählenToolStripMenuItem.DropDownItems.RemoveAt(0); }

    string[] fileListWithPath = Directory.GetFiles("Languages");
    for (int i = 0; i < fileListWithPath.Length; i++)
    {
        ToolStripMenuItem item = new ToolStripMenuItem(System.IO.Path.GetFileName(fileListWithPath[i]));
        item.Click += new System.EventHandler(this.Abfragen);
        spracheAuswählenToolStripMenuItem.DropDownItems.Add(item);
    }
}

private void Abfragen(object sender, EventArgs e)
{
    lbl_Language.Text = sender.ToString();
    chart1.DataSource = File.ReadAllLines("Stats/" + sender.ToString());
    chart1.DataBind();
}

编辑:

我解决了我的问题。我在互联网上找不到任何有用的东西,所以我查了一下旧的源代码,发现了这个:

    chart_History.DataSource = table; // sets the datasource of the chart to the datatable which was filled above
    chart_History.Series[0].XValueMember = table.Columns["index"].ToString();  // sets the datasource of the X-Axis of the chart
    chart_History.Series[0].YValueMembers = table.Columns[Convert.ToString(cmbBox_List.SelectedIndex + 1)].ToString(); // sets the datasource of the Y-Axis of the chart
    chart_History.Series[0].LegendText = cmbBox_List.SelectedItem.ToString(); // Sets the string of the legend to the selected item of the combobox
    chart_History.DataBind(); // Finally binds the Information to the chart

显然我必须声明X轴和Y轴...... 所以我按CTRL + Z错误地删除了一些东西...... 但我想我会改用DataTable。它与阵列太混乱了。 谢谢你的帮助。 我希望这将有助于未来的其他人:)

1 个答案:

答案 0 :(得分:0)

尝试在?:

之后添加以下内容
chart1.DataBind();

这是一篇旧帖子,但它可能有用:Data Binding Microsoft Chart Control