我这里有3个类:
1:
namespace DataAccess
{
public class Class1
{
public DataTable dtqramount()//表的出处
{
SqlCommand cmd = new SqlCommand(Common.Class1.sql_qr_amount, cn);
da = new SqlDataAdapter(cmd);
da.Fill(ds, Common.Class1.table_qr_amount);
dt=ds.Tables [0];
return dt;
}
}
}
2:
namespace Chart
{
public delegate DataTable wtdelegate();
public class Class1
{
#region 奇瑞全年销售曲线//画图部分
public void qrallyearamount(ZedGraphControl zgc,wtdelegate Makeking)
{
DataTable dt = Makeking();
GraphPane myPane = zgc.GraphPane; // Title
myPane.Title.Text = "奇瑞日销售统计";
myPane.XAxis.Title.Text = "日期";
myPane.YAxis.Title.Text = "数量";
//初始化line
Random rd = new Random();
PointPairList line = new PointPairList();
for (int i = 0; i < dt.Rows.Count; i++)
{ /*
* 添加坐标对,需要将X/Y值全部转为double类型。原本以为他们会支持DateTime类型。
* 个人觉得还是很有必要的,毕竟很多图都是时间-**曲线图,有需求。
*/
string date = Convert.ToDateTime(dt.Rows[i]["qr_data"]).ToString("MM.dd");
line.Add(Convert.ToDouble(date), Convert.ToDouble(dt.Rows[i]["amount"]));
}
// 绘制曲线
LineItem li = myPane.AddCurve("数量", line, Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255)), SymbolType.Circle);
myPane.Chart.Fill = new Fill(Color.White,
Color.FromArgb(255, 255, 166), 45.0F); zgc.AxisChange();
}
#endregion
}
}
3:
namespace 销售统计课件
{
public partial class Form1 : Form
{
private MemoryStream memoryStream;
public Form1()
{
InitializeComponent();
SetSkinFile(Properties.Resources.vista1); //引用皮肤 } private void Form1_Load(object sender, EventArgs e)
{
this.creatchart();
//生成奇瑞交叉表
//Chart.Class1 ct = new Chart.Class1();
DataAccess .Class1 dac=new DataAccess.Class1(); ct.qrallyearamount(zedGraphControl1,dac.dtqramount);//Chart层中的图表方法
this.data();
}
我想把第一个类里的表当做参数传给第二个图表类,再在第三个类里调用,但是在蓝色字体哪里出错,委托不允许这样使用吗?请高人指点谢谢~
1:
namespace DataAccess
{
public class Class1
{
public DataTable dtqramount()//表的出处
{
SqlCommand cmd = new SqlCommand(Common.Class1.sql_qr_amount, cn);
da = new SqlDataAdapter(cmd);
da.Fill(ds, Common.Class1.table_qr_amount);
dt=ds.Tables [0];
return dt;
}
}
}
2:
namespace Chart
{
public delegate DataTable wtdelegate();
public class Class1
{
#region 奇瑞全年销售曲线//画图部分
public void qrallyearamount(ZedGraphControl zgc,wtdelegate Makeking)
{
DataTable dt = Makeking();
GraphPane myPane = zgc.GraphPane; // Title
myPane.Title.Text = "奇瑞日销售统计";
myPane.XAxis.Title.Text = "日期";
myPane.YAxis.Title.Text = "数量";
//初始化line
Random rd = new Random();
PointPairList line = new PointPairList();
for (int i = 0; i < dt.Rows.Count; i++)
{ /*
* 添加坐标对,需要将X/Y值全部转为double类型。原本以为他们会支持DateTime类型。
* 个人觉得还是很有必要的,毕竟很多图都是时间-**曲线图,有需求。
*/
string date = Convert.ToDateTime(dt.Rows[i]["qr_data"]).ToString("MM.dd");
line.Add(Convert.ToDouble(date), Convert.ToDouble(dt.Rows[i]["amount"]));
}
// 绘制曲线
LineItem li = myPane.AddCurve("数量", line, Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255)), SymbolType.Circle);
myPane.Chart.Fill = new Fill(Color.White,
Color.FromArgb(255, 255, 166), 45.0F); zgc.AxisChange();
}
#endregion
}
}
3:
namespace 销售统计课件
{
public partial class Form1 : Form
{
private MemoryStream memoryStream;
public Form1()
{
InitializeComponent();
SetSkinFile(Properties.Resources.vista1); //引用皮肤 } private void Form1_Load(object sender, EventArgs e)
{
this.creatchart();
//生成奇瑞交叉表
//Chart.Class1 ct = new Chart.Class1();
DataAccess .Class1 dac=new DataAccess.Class1(); ct.qrallyearamount(zedGraphControl1,dac.dtqramount);//Chart层中的图表方法
this.data();
}
我想把第一个类里的表当做参数传给第二个图表类,再在第三个类里调用,但是在蓝色字体哪里出错,委托不允许这样使用吗?请高人指点谢谢~
ct.qrallyearamount(zedGraphControl1,del);//Chart层中的图表方法
public void qrallyearamount(ZedGraphControl zgc,wtdelegate Makeking)第二个参数是wtdelegate 类型的委托:
public delegate DataTable wtdelegate();所以你这么调用肯定有问题的!
ct.qrallyearamount(zedGraphControl1,dac.dtqramount);//Chart层中的图表方法
你要先将dac.dtqramount转换成wtdelegate 类型的委托,楼上的是一种方法,还可以这样:
ct.qrallyearamount(zedGraphControl1,new wtdelegate(dac.dtqramount));