我有一个MYSQL数据库,我把它链接到我的.Net应用程序中的图表。但是,我有5个值可以显示(所以5个条),但它们都是相同的颜色,我更喜欢让它们各自颜色不同。
我相信我必须用系列做,但我不知道如何..?
码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace Project_3
{
public partial class Vince : Form
{
public Vince()
{
InitializeComponent();
this.WindowState = FormWindowState.Maximized;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string query = "";
string query2 = "";
if (comboBox1.Text == "Centrum")
{
query = "SELECT Aantal FROM Centrum";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Centrum'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 4456";
label4.Text = "Per inwoner vinden er 0,13 misdrijven en 0,08 verhuizingen plaats";
}
else if (comboBox1.Text == "Groenoord")
{
query = "SELECT Aantal FROM Groenoord";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Groenoord'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 9035";
label4.Text = "Per inwoner vinden er 0,04 misdrijven en 0,06 verhuizingen plaats";
}
else if (comboBox1.Text == "Kethel")
{
query = "SELECT Aantal FROM Kethel";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Kethel'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 3704";
label4.Text = "Per inwoner vinden er 0,20 misdrijven en 0,04 verhuizingen plaats";
}
else if (comboBox1.Text == "Nieuwland")
{
query = "SELECT Aantal FROM Nieuwland";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Nieuwland'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 14076";
label4.Text = "Per inwoner vinden er 0,04 misdrijven en 0,08 verhuizingen plaats";
}
else if (comboBox1.Text == "Oost")
{
query = "SELECT Aantal FROM Oost";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Oost'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 11286";
label4.Text = "Per inwoner vinden er 0,10 misdrijven en 0,11 verhuizingen plaats";
}
else if (comboBox1.Text == "Spaland")
{
query = "SELECT Aantal FROM Spaland";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Spaland'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 8419";
label4.Text = "Per inwoner vinden er 0,02 misdrijven en 0,03 verhuizingen plaats";
}
else if (comboBox1.Text == "West")
{
query = "SELECT Aantal FROM West";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'West'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 4456";
label4.Text = "Per inwoner vinden er 0,12 misdrijven en 0,21 verhuizingen plaats";
}
else if (comboBox1.Text == "Woudhoek")
{
query = "SELECT Aantal FROM Woudhoek";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Woudhoek'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 12116";
label4.Text = "Per inwoner vinden er 0,02 misdrijven en 0,02 verhuizingen plaats";
}
else if (comboBox1.Text == "Zuid")
{
query = "SELECT Aantal FROM Zuid";
query2 = "Select Aantal FROM Verhuizingen WHERE wijk = 'Zuid'";
pictureBox1.Visible = true;
label3.Text = "Inwoners: 5929";
label4.Text = "Per inwoner vinden er 0,05 misdrijven en 0,06 verhuizingen plaats";
}
string connectionString = "datasource=127.0.0.1;port=3306;username=root;password=;database=project3";
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
MySqlCommand dbquery = new MySqlCommand(query, databaseConnection);
MySqlDataReader reader;
List<int> yValues = new List<int>();
try
{
databaseConnection.Open();
reader = dbquery.ExecuteReader();
if (reader.HasRows)
{
int count = reader.FieldCount;
while (reader.Read())
{
//List<string> xValues = new List<string>();
yValues.Add(Int32.Parse(reader.GetString(0)));
//xValues.Add(reader.GetName(i));
}
}
databaseConnection.Close();
MySqlCommand dbquery2 = new MySqlCommand(query2, databaseConnection);
MySqlDataReader reader2;
databaseConnection.Open();
reader2 = dbquery2.ExecuteReader();
if (reader2.HasRows)
{
int count = reader2.FieldCount;
while (reader2.Read())
{
//List<string> xValues = new List<string>();
yValues.Add(Int32.Parse(reader2.GetString(0)));
//xValues.Add(reader.GetName(i));
}
}
databaseConnection.Close();
string[] xValues = { "Diefstal ", "Geweld ", "Inbraak", "Vernieling", "Verhuizingen" };
chart1.Series[0].Points.DataBindXY(xValues, yValues);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
private void chart1_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void Vince_Load(object sender, EventArgs e)
{
}
private void label2_Click_1(object sender, EventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
}
}
你不需要也很可能也不想要多个系列。
关于你不希望它的原因是,当它们不应该时,它会使事情变得复杂。
另一个是,不同系列中的列将被定位,使得它们可以在相同的x值上彼此相邻。如果所有x值都不同,则位置会漂移。
而是单独为每个DataPoint着色。
逐个添加它们时,您可以一直这样做。
使用DataBinding,您需要在绑定发生后执行此操作..:
for (int i = 0; i < chart1.Series[0].Points.Count; i++)
{
chart1.Series[0].Points[i].Color = colors[i];
}
这假设您有一个合适的List或颜色数组:
Color[] colors = { Color.Green, Color.Blue, Color.Wheat, Color.AliceBlue, Color.Teal};
请注意,虽然图表中的几种类型的DataBinding支持extended properties,但大多数不支持here,甚至那些支持qazxswpoi,不支持绑定颜色。请参阅qazxswpoi进行讨论..!