柱形图 和 折线图 饼形图控件(原创)

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Xml ;

namespace ChartControl
{
///

1<summary>   
2/// ChartControl 1.0 的摘要说明。此控件是画图的,根据xml文档的数据生成图表。   
3/// 目前能够画2维图和3维图 柱形图 和 折线图 饼形图。韩永矗5Apr2005制作。   
4/// 柱形图请将xml文件中的“add key="DiagramType"”修改为histogram   
5/// 折线图请将xml文件中的“add key="DiagramType"”修改为flexdiagram   
6/// 饼形图请将xml文件中的“add key="DiagramType"”修改为cakydiagram   
7/// xml文件不能修改名字,需要和你的程序执行文件在同一个目录。   
8/// </summary>

public class ChartControl : System.Windows.Forms.UserControl
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
///

1<summary>   
2/// 必需的设计器变量。   
3/// </summary>

private System.ComponentModel.Container components = null;

public ChartControl()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();

// TODO: 在 InitComponent 调用后添加任何初始化

}

///

1<summary>   
2/// 清理所有正在使用的资源。   
3/// </summary>

protected override void Dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.Dispose();
}
base.Dispose( disposing );
}

#region 组件设计器生成的代码
///

1<summary>   
2/// 设计器支持所需的方法 - 不要使用代码编辑器   
3/// 修改此方法的内容。   
4/// </summary>

private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(104, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 24);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 56);
this.label2.Name = "label2";
this.label2.TabIndex = 1;
this.label2.Text = "label2";
//
// label3
//
this.label3.Location = new System.Drawing.Point(288, 320);
this.label3.Name = "label3";
this.label3.TabIndex = 2;
this.label3.Text = "label3";
//
// ChartControl
//
this.BackColor = System.Drawing.Color.White;
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Name = "ChartControl";
this.Size = new System.Drawing.Size(448, 360);
this.Load += new System.EventHandler(this.ChartControl_Load);
this.ResumeLayout(false);

}
#endregion

#region 读写xml文件的几个小函数,2005 4 2 by hyc

public void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(xmlPath);
XmlNode xNode;
XmlElement xElem1;
XmlElement xElem2;

xNode = xDoc.SelectSingleNode("//appSettings");

xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
if ( xElem1 != null )
{
xElem1.SetAttribute("value",AppValue);
}
else
{
xElem2 = xDoc.CreateElement("add");
xElem2.SetAttribute("key",AppKey);
xElem2.SetAttribute("value",AppValue);
xNode.AppendChild(xElem2);
}
xDoc.Save(xmlPath);
}

public void GetXmlFileValue(string xmlPath,string AppKey,ref string AppValue)//读xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(xmlPath);
XmlNode xNode;
XmlElement xElem1;

xNode = xDoc.SelectSingleNode("//appSettings");

xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
if ( xElem1 != null )
{
AppValue=xElem1.GetAttribute ("value");
}
else
{
// MessageBox.Show ("There is not any information!");
}

}

#endregion

#region 变量声明,2005 4 4 by hyc

public int FormHeight;
public int FormWidth;
public int Num=1;
public int Max=1;
public int Min=1;
public int JNum=1;//维数
public int polebold;
public int HeightXS=100;//高度系数
public int[] StartAngl=new int [100];//开始角度
public int[] SweepAngl=new int [100]; //跨越弧度
public int AllSweep;
public int KuanDu;
public int[,] X=new int [100,100];
public int [,] Y=new int[100,100];
public int[,] YY=new int [100,100];
public string[] TypeName=new string [100];
public string[,] TypeValue=new string [100,100];
public string appvalue;
public string PathFileName=System.Windows .Forms .Application.StartupPath +" \\XMLChart.xml ";
System.Windows .Forms .Label [] TypeNameLabel;
System.Windows .Forms .Label [,] TypeValueLabel;

#endregion

#region 自定义函数,2005 4 4 by hyc

public void AllBegain()//All 初始化
{
FormHeight=this.Height ;
FormWidth=this.Width ;
GetXmlFileValue(PathFileName,"DiagramName",ref appvalue);
label1.Text =appvalue+"(此图表控件是测试版)";
GetXmlFileValue(PathFileName,"YName",ref appvalue);
label2.Text =appvalue;
GetXmlFileValue(PathFileName,"XName",ref appvalue);
label3.Text =appvalue;

label1.AutoSize =true;
label1.Top =5;
label1.Left =(FormWidth-label1.Width )/2;
label2.AutoSize =true ;
label3.AutoSize=true;
label2.Top =15;
label2.Left =5;
label3.Top=FormHeight-10;
label3.Left=FormWidth-label3.Width-5;

GetXmlFileValue(PathFileName,"Num",ref appvalue);
Num=Int32.Parse (appvalue);

GetXmlFileValue(PathFileName,"JNum",ref appvalue);
JNum=Int32.Parse (appvalue);

}

public void HistogramBegain()//Histogram 初始化
{
for(int i=1;i<=Num;i++)
{
GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);
for(int j=1;j<=JNum;j++)
{
GetXmlFileValue(PathFileName,"ID"+j.ToString()+"Num"+i.ToString (),ref TypeValue[j,i]);
}
}

polebold=FormWidth2/(3Num*JNum);

Max=Int32.Parse (TypeValue[1,1]);
Min=Int32.Parse (TypeValue[1,1]);
for(int i=1;i<=Num;i++)
{
for(int j=1;j<=JNum;j++)
{
if(Int32.Parse (TypeValue[j,i])>Max)
{
Max=Int32.Parse (TypeValue[j,i]);
}
if(Int32.Parse (TypeValue[j,i])

  1<min) (typevalue[j,i]);="" for(int="" i="1;i&lt;100;i++)" if(max="" min="Int32.Parse" {="" }="">(FormHeight-50))   
  2{   
  3HeightXS=HeightXS/2;   
  4Max=Max/2;   
  5}   
  6if(Max&lt;(FormHeight-50)/2)   
  7{   
  8HeightXS=HeightXS*2;   
  9Max=Max*2;   
 10}   
 11if(Max&lt;(FormHeight-50) &amp;&amp; Max&gt;(FormHeight-50)/2)   
 12{   
 13break;   
 14}   
 15} 
 16
 17for(int i=1;i&lt;=Num;i++)   
 18{   
 19for(int j=1;j&lt;=JNum;j++)   
 20{   
 21X[j,i]=(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )+(polebold+1)*(j-1)-label3.Width ;//????   
 22Y[j,i]=label3.Top-5-(Int32.Parse (TypeValue[j,i])*HeightXS/100);   
 23YY[j,i]=Int32.Parse (TypeValue[j,i]);   
 24YY[j,i]=YY[j,i]*HeightXS/100;   
 25}   
 26} 
 27
 28TypeNameLabel = new System.Windows .Forms.Label[100]; 
 29
 30for(int i=1;i&lt;=Num;i++)   
 31{   
 32TypeNameLabel[i]=new Label ();   
 33TypeNameLabel[i].Top =label3.Top ;   
 34TypeNameLabel[i].Text =TypeName[i];   
 35TypeNameLabel[i].AutoSize =true;   
 36TypeNameLabel[i].Left =X[1,i]+polebold*JNum/2;   
 37this.Controls .Add (TypeNameLabel[i]);   
 38} 
 39
 40TypeValueLabel = new System.Windows .Forms.Label[100,100];   
 41  
 42for(int i=1;i&lt;=Num;i++)   
 43{   
 44for(int j=1;j&lt;=JNum;j++)   
 45{   
 46TypeValueLabel[j,i]=new Label ();   
 47TypeValueLabel[j,i].Top =Y[j,i]-20 ;   
 48TypeValueLabel[j,i].Text =TypeValue[j,i];   
 49TypeValueLabel[j,i].AutoSize =true;   
 50TypeValueLabel[j,i].Left =X[j,i];   
 51this.Controls .Add (TypeValueLabel[j,i]);   
 52}   
 53}   
 54} 
 55
 56  
 57public void FlexDiagramBegain()//Flex Diagram 初始化   
 58{   
 59for(int i=1;i&lt;=Num;i++)   
 60{   
 61GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);   
 62for(int j=1;j&lt;=JNum;j++)   
 63{   
 64GetXmlFileValue(PathFileName,"ID"+j.ToString()+"Num"+i.ToString (),ref TypeValue[j,i]);   
 65}   
 66}   
 67  
 68TypeNameLabel = new System.Windows .Forms.Label[100]; 
 69
 70for(int i=1;i&lt;=Num;i++)   
 71{   
 72TypeNameLabel[i]=new Label ();   
 73TypeNameLabel[i].Top =label3.Top ;   
 74TypeNameLabel[i].Text =TypeName[i];   
 75TypeNameLabel[i].AutoSize =true;   
 76TypeNameLabel[i].Left =(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )-TypeNameLabel[i].Width /2;   
 77this.Controls .Add (TypeNameLabel[i]);   
 78}   
 79  
 80Max=Int32.Parse (TypeValue[1,1]);   
 81Min=Int32.Parse (TypeValue[1,1]);   
 82for(int i=1;i&lt;=Num;i++)   
 83{   
 84for(int j=1;j&lt;=JNum;j++)   
 85{   
 86if(Int32.Parse (TypeValue[j,i])&gt;Max)   
 87{   
 88Max=Int32.Parse (TypeValue[j,i]);   
 89}   
 90if(Int32.Parse (TypeValue[j,i])<min) (typevalue[j,i]);="" for(int="" i="1;i&lt;100;i++)" if(max="" min="Int32.Parse" {="" }="">(FormHeight-50))   
 91{   
 92HeightXS=HeightXS/2;   
 93Max=Max/2;   
 94}   
 95if(Max&lt;(FormHeight-50)/2)   
 96{   
 97HeightXS=HeightXS*2;   
 98Max=Max*2;   
 99}   
100if(Max&lt;(FormHeight-50) &amp;&amp; Max&gt;(FormHeight-50)/2)   
101{   
102break;   
103}   
104} 
105
106for(int i=1;i&lt;=Num;i++)   
107{   
108for(int j=1;j&lt;=JNum;j++)   
109{   
110X[j,i]=(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width );   
111Y[j,i]=label3.Top-5-(Int32.Parse (TypeValue[j,i])*HeightXS/100);   
112YY[j,i]=Int32.Parse (TypeValue[j,i]);   
113YY[j,i]=YY[j,i]*HeightXS/100;   
114}   
115}   
116  
117TypeValueLabel = new System.Windows .Forms.Label[100,100]; 
118
119for(int i=1;i&lt;=Num;i++)   
120{   
121for(int j=1;j&lt;=JNum;j++)   
122{   
123TypeValueLabel[j,i]=new Label ();   
124TypeValueLabel[j,i].Top =Y[j,i]-20 ;   
125TypeValueLabel[j,i].Text =TypeValue[j,i];   
126TypeValueLabel[j,i].AutoSize =true;   
127TypeValueLabel[j,i].Left =(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )-TypeValueLabel[j,i].Width /2;   
128this.Controls .Add (TypeValueLabel[j,i]);   
129}   
130}   
131} 
132
133  
134public void CakyDiagramBegain()//饼形图初始化   
135{   
136for(int i=1;i&lt;=Num;i++)   
137{   
138GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);   
139GetXmlFileValue(PathFileName,"ID1Num"+i.ToString (),ref TypeValue[1,i]);   
140} 
141
142for(int i=1;i&lt;=Num;i++)   
143{   
144GetXmlFileValue(PathFileName,"ID1Num"+i.ToString (),ref appvalue);   
145SweepAngl[i]=Int32.Parse (appvalue);   
146} 
147
148AllSweep=0;   
149for(int i=1;i&lt;=Num;i++)   
150{   
151AllSweep=AllSweep+SweepAngl[i];   
152} 
153
154for(int i=1;i&lt;=Num;i++)   
155{   
156SweepAngl[i]=(SweepAngl[i]*360)/AllSweep;   
157} 
158
159//去掉白边   
160int tempSw;   
161for(int j=1;j&lt;360;j++)   
162{   
163tempSw=0;   
164for(int i=1;i&lt;=Num;i++)   
165{   
166tempSw=tempSw+SweepAngl[i];   
167}   
168if(tempSw&lt;360)   
169{   
170for(int k=1;k&lt;=360-tempSw;k++)   
171{   
172if(k<num) break;="" else="" if(tempsw="" sweepangl[k]++;="" {="" }="">=360)   
173{   
174break;   
175}   
176} 
177
178  
179StartAngl[1]=0;   
180  
181int tempAllSweep;   
182for(int i=2;i&lt;=Num;i++)   
183{   
184tempAllSweep=0;   
185for(int j=1;j&lt;=i-1;j++)   
186{   
187tempAllSweep=tempAllSweep+SweepAngl[j];   
188}   
189StartAngl[i]=tempAllSweep;   
190} 
191
192  
193if(FormWidth&gt;=FormHeight)   
194{   
195KuanDu=FormHeight*2/3;   
196}   
197else   
198{   
199KuanDu=FormWidth*2/3;   
200} 
201
202  
203double Angle; 
204
205TypeNameLabel = new System.Windows .Forms.Label[100];   
206  
207for(int i=1;i&lt;=Num;i++)   
208{   
209Angle=(360-StartAngl[i]+90-SweepAngl[i]/2)*3.141592653579/180; 
210
211TypeNameLabel[i]=new Label ();   
212TypeNameLabel[i].Top =(int)((KuanDu+60)/2* Math.Cos (Angle))+(FormHeight/6+KuanDu/2);   
213TypeNameLabel[i].Text =TypeName[i];   
214TypeNameLabel[i].AutoSize =true;   
215TypeNameLabel[i].Left =(int)((KuanDu+60)/2* Math.Sin (Angle))+(FormWidth/6+KuanDu/2);   
216this.Controls .Add (TypeNameLabel[i]);   
217} 
218
219TypeValueLabel = new System.Windows .Forms.Label[100,100];   
220  
221string tempstr1; 
222
223for(int i=1;i&lt;=Num;i++)   
224{   
225tempstr1=(Int32.Parse (TypeValue[1,i])*1.0/AllSweep*100.0).ToString()+" ";   
226TypeValueLabel[1,i]=new Label ();   
227TypeValueLabel[1,i].Top =TypeNameLabel[i].Top ;   
228TypeValueLabel[1,i].Text =tempstr1.Substring(0,5)+"%";   
229TypeValueLabel[1,i].AutoSize =true;   
230TypeValueLabel[1,i].Left =TypeNameLabel[i].Left+TypeNameLabel[i].Width +2;   
231this.Controls .Add (TypeValueLabel[1,i]);   
232} 
233
234  
235} 
236
237  
238#endregion 
239
240private void ChartControl_Load(object sender, System.EventArgs e)   
241{   
242AllBegain();   
243} 
244
245  
246#region Draw Diagram函数,2005 4 4 by hyc 
247
248protected override void OnPaint(PaintEventArgs paintEvent)   
249{   
250Graphics g = paintEvent.Graphics;   
251SolidBrush brush=new SolidBrush (Color.Blue );   
252Pen pen=new Pen (Color.Black);   
253Pen pen2=new Pen (Color.DarkGray ); 
254
255SolidBrush[] bb;   
256bb=new SolidBrush [100];   
257bb[1]=new SolidBrush (Color.DarkRed);   
258bb[2]=new SolidBrush (Color.DarkSlateBlue);   
259bb[3]=new SolidBrush (Color.DarkGray);   
260bb[4]=new SolidBrush (Color.YellowGreen);   
261bb[5]=new SolidBrush (Color.DarkSalmon);   
262bb[6]=new SolidBrush (Color.DarkOrange);   
263bb[7]=new SolidBrush (Color.LightYellow);   
264bb[8]=new SolidBrush (Color.SlateBlue);   
265bb[9]=new SolidBrush (Color.Black);   
266bb[10]=new SolidBrush (Color.YellowGreen);   
267bb[11]=new SolidBrush (Color.DarkSeaGreen);   
268bb[12]=new SolidBrush (Color.DarkSlateGray);   
269bb[13]=new SolidBrush (Color.DarkTurquoise);   
270bb[14]=new SolidBrush (Color.DarkViolet);   
271bb[15]=new SolidBrush (Color.DeepPink); 
272
273  
274Pen[] pp;   
275pp=new Pen [100];   
276pp[1]=new Pen (Color.DarkRed);   
277pp[2]=new Pen (Color.DarkSlateBlue);   
278pp[3]=new Pen (Color.DarkGray);   
279pp[4]=new Pen (Color.YellowGreen);   
280pp[5]=new Pen (Color.DarkSalmon);   
281pp[6]=new Pen (Color.DarkOrange);   
282pp[7]=new Pen (Color.LightYellow);   
283pp[8]=new Pen (Color.SlateBlue);   
284pp[9]=new Pen (Color.Black);   
285pp[10]=new Pen (Color.YellowGreen);   
286pp[11]=new Pen (Color.DarkSeaGreen);   
287pp[12]=new Pen (Color.DarkSlateGray);   
288pp[13]=new Pen (Color.DarkTurquoise);   
289pp[14]=new Pen (Color.DarkViolet);   
290pp[15]=new Pen (Color.DeepPink);   
291  
292  
293GetXmlFileValue(PathFileName,"DiagramType",ref appvalue);   
294switch(appvalue)   
295{   
296case "histogram"://柱形图   
297HistogramBegain();   
298g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label3.Left+label3.Width,label3.Top-5);   
299g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label2.Left +label2.Width ,label2.Top-5); 
300
301  
302for(int i=1;i&lt;=Num;i++)   
303{   
304for(int j=1;j&lt;=JNum;j++)   
305{   
306g.FillRectangle(bb[j],X[j,i],Y[j,i],polebold,YY[j,i]);   
307}   
308  
309}   
310break;   
311case"flexdiagram"://折线图   
312FlexDiagramBegain();   
313g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label3.Left+label3.Width,label3.Top-5);   
314g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label2.Left +label2.Width ,label2.Top-5); 
315
316for(int i=1;i<num;i++) #endregion="" (bb[i],formwidth="" (pen,label2.left="" (pp[j],x[j,i],y[j,i],x[j,i+1],y[j,i+1]);="" +label2.width="" ,label2.top-5);="" ,label3.top-5,label2.left="" ,label3.top-5,label3.left+label3.width,label3.top-5);="" 6,formheight="" 6,kuandu,kuandu,startangl[i],sweepangl[i]);="" <?xml="" ?="" _="" break;="" cakydiagrambegain();="" case"cakydiagram":="" default:="" encoding="utf-8" for(int="" g.drawline="" g.drawline(pen2,x[j,i],y[j,i],x[j,i],label3.top-5);="" g.fillpie="" i="1;i&lt;=Num;i++)" j="1;j&lt;=JNum;j++)" version="1.0" xmlchart.xml="" xml文件内容,此文件必须放在应用程序目录,文件名="" {="" }="" 饼形图="">
317<configuration>
318<appsettings>
319<add key="DiagramType" value="histogram"></add>
320<add key="DiagramName" value="1-12月产品数量对比"></add>
321<add key="XName" value="月份"></add>
322<add key="YName" value="数量"></add>
323<add key="JNum" value="2"></add>
324<add key="Num" value="5"></add>
325<add key="Text" value="yes"></add>
326<add key="ID1" value="1月"></add>
327<add key="ID2" value="2月"></add>
328<add key="ID3" value="3月"></add>
329<add key="ID4" value="4月"></add>
330<add key="ID5" value="5月"></add>
331<add key="ID6" value="6月"></add>
332<add key="ID7" value="7月"></add>
333<add key="ID8" value="8月"></add>
334<add key="ID9" value="9月"></add>
335<add key="ID10" value="10月"></add>
336<add key="ID11" value="11月"></add>
337<add key="ID12" value="12月"></add>
338<add key="ID13" value="1月"></add>
339<add key="ID14" value="2月"></add>
340<add key="ID15" value="3月"></add>
341<add key="ID16" value="4月"></add>
342<add key="ID17" value="5月"></add>
343<add key="ID18" value="6月"></add>
344<add key="ID19" value="7月"></add>
345<add key="ID20" value="8月"></add>
346<add key="ID21" value="9月"></add>
347<add key="ID22" value="10月"></add>
348<add key="ID23" value="11月"></add>
349<add key="ID24" value="12月"></add>
350<add key="ID25" value="1月"></add>
351<add key="ID1Num1" value="9"></add>
352<add key="ID1Num2" value="5"></add>
353<add key="ID1Num3" value="6"></add>
354<add key="ID1Num4" value="7"></add>
355<add key="ID1Num5" value="4"></add>
356<add key="ID1Num6" value="6"></add>
357<add key="ID1Num7" value="5"></add>
358<add key="ID1Num8" value="3"></add>
359<add key="ID1Num9" value="2"></add>
360<add key="ID1Num10" value="1"></add>
361<add key="ID1Num11" value="2"></add>
362<add key="ID1Num12" value="2"></add>
363<add key="ID1Num13" value="2"></add>
364<add key="ID1Num14" value="2"></add>
365<add key="ID1Num15" value="2"></add>
366<add key="ID1Num16" value="2"></add>
367<add key="ID1Num17" value="2"></add>
368<add key="ID1Num18" value="2"></add>
369<add key="ID1Num19" value="2"></add>
370<add key="ID1Num20" value="2"></add>
371<add key="ID1Num21" value="2"></add>
372<add key="ID1Num22" value="2"></add>
373<add key="ID1Num23" value="2"></add>
374<add key="ID1Num24" value="2"></add>
375<add key="ID1Num25" value="2"></add>
376<add key="ID2Num1" value="4"></add>
377<add key="ID2Num2" value="5"></add>
378<add key="ID2Num3" value="4"></add>
379<add key="ID2Num4" value="1"></add>
380<add key="ID2Num5" value="5"></add>
381<add key="ID2Num6" value="3"></add>
382<add key="ID2Num7" value="4"></add>
383<add key="ID2Num8" value="1"></add>
384<add key="ID2Num9" value="2"></add>
385<add key="ID2Num10" value="4"></add>
386<add key="ID2Num11" value="5"></add>
387<add key="ID2Num12" value="2"></add>
388<add key="ID2Num13" value="2"></add>
389<add key="ID2Num14" value="2"></add>
390<add key="ID2Num15" value="2"></add>
391<add key="ID2Num16" value="2"></add>
392<add key="ID2Num17" value="2"></add>
393<add key="ID2Num18" value="2"></add>
394<add key="ID2Num19" value="2"></add>
395<add key="ID2Num20" value="2"></add>
396<add key="ID2Num21" value="2"></add>
397<add key="ID2Num22" value="2"></add>
398<add key="ID2Num23" value="2"></add>
399<add key="ID2Num24" value="2"></add>
400<add key="ID2Num25" value="2"></add>
401<add key="ID3Num1" value="4"></add>
402<add key="ID3Num2" value="5"></add>
403<add key="ID3Num3" value="6"></add>
404<add key="ID3Num4" value="1"></add>
405<add key="ID3Num5" value="2"></add>
406<add key="ID3Num6" value="2"></add>
407<add key="ID3Num7" value="5"></add>
408<add key="ID3Num8" value="2"></add>
409<add key="ID3Num9" value="5"></add>
410<add key="ID3Num10" value="7"></add>
411<add key="ID3Num11" value="9"></add>
412<add key="ID3Num12" value="2"></add>
413<add key="ID3Num13" value="2"></add>
414<add key="ID3Num14" value="2"></add>
415<add key="ID3Num15" value="2"></add>
416<add key="ID3Num16" value="2"></add>
417<add key="ID3Num17" value="2"></add>
418<add key="ID3Num18" value="2"></add>
419<add key="ID3Num19" value="2"></add>
420<add key="ID3Num20" value="2"></add>
421<add key="ID3Num21" value="2"></add>
422<add key="ID3Num22" value="2"></add>
423<add key="ID3Num23" value="2"></add>
424<add key="ID3Num24" value="2"></add>
425<add key="ID3Num25" value="2"></add>
426<add key="ID4Num1" value="2"></add>
427<add key="ID4Num2" value="5"></add>
428<add key="ID4Num3" value="4"></add>
429<add key="ID4Num4" value="2"></add>
430<add key="ID4Num5" value="4"></add>
431<add key="ID4Num6" value="3"></add>
432<add key="ID4Num7" value="1"></add>
433<add key="ID4Num8" value="1"></add>
434<add key="ID4Num9" value="4"></add>
435<add key="ID4Num10" value="5"></add>
436<add key="ID4Num11" value="8"></add>
437<add key="ID4Num12" value="2"></add>
438<add key="ID4Num13" value="2"></add>
439<add key="ID4Num14" value="2"></add>
440<add key="ID4Num15" value="2"></add>
441<add key="ID4Num16" value="2"></add>
442<add key="ID4Num17" value="2"></add>
443<add key="ID4Num18" value="2"></add>
444<add key="ID4Num19" value="2"></add>
445<add key="ID4Num20" value="2"></add>
446<add key="ID4Num21" value="2"></add>
447<add key="ID4Num22" value="2"></add>
448<add key="ID4Num23" value="2"></add>
449<add key="ID4Num24" value="2"></add>
450<add key="ID4Num25" value="2"></add>
451<add key="ID5Num1" value="2"></add>
452<add key="ID5Num2" value="5"></add>
453<add key="ID5Num3" value="4"></add>
454<add key="ID5Num4" value="2"></add>
455<add key="ID5Num5" value="4"></add>
456<add key="ID5Num6" value="3"></add>
457<add key="ID5Num7" value="1"></add>
458<add key="ID5Num8" value="1"></add>
459<add key="ID5Num9" value="4"></add>
460<add key="ID5Num10" value="5"></add>
461<add key="ID5Num11" value="8"></add>
462<add key="ID5Num12" value="2"></add>
463<add key="ID5Num13" value="2"></add>
464<add key="ID5Num14" value="2"></add>
465<add key="ID5Num15" value="2"></add>
466<add key="ID5Num16" value="2"></add>
467<add key="ID5Num17" value="2"></add>
468<add key="ID5Num18" value="2"></add>
469<add key="ID5Num19" value="2"></add>
470<add key="ID5Num20" value="2"></add>
471<add key="ID5Num21" value="2"></add>
472<add key="ID5Num22" value="2"></add>
473<add key="ID5Num23" value="2"></add>
474<add key="ID5Num24" value="2"></add>
475<add key="ID5Num25" value="2"></add>
476<add key="ID6Num1" value="2"></add>
477<add key="ID6Num2" value="5"></add>
478<add key="ID6Num3" value="4"></add>
479<add key="ID6Num4" value="2"></add>
480<add key="ID6Num5" value="4"></add>
481<add key="ID6Num6" value="3"></add>
482<add key="ID6Num7" value="1"></add>
483<add key="ID6Num8" value="1"></add>
484<add key="ID6Num9" value="4"></add>
485<add key="ID6Num10" value="5"></add>
486<add key="ID6Num11" value="8"></add>
487<add key="ID6Num12" value="2"></add>
488<add key="ID6Num13" value="2"></add>
489<add key="ID6Num14" value="2"></add>
490<add key="ID6Num15" value="2"></add>
491<add key="ID6Num16" value="2"></add>
492<add key="ID6Num17" value="2"></add>
493<add key="ID6Num18" value="2"></add>
494<add key="ID6Num19" value="2"></add>
495<add key="ID6Num20" value="2"></add>
496<add key="ID6Num21" value="2"></add>
497<add key="ID6Num22" value="2"></add>
498<add key="ID6Num23" value="2"></add>
499<add key="ID6Num24" value="2"></add>
500<add key="ID6Num25" value="2"></add>
501<add key="ID7Num1" value="2"></add>
502<add key="ID7Num2" value="5"></add>
503<add key="ID7Num3" value="4"></add>
504<add key="ID7Num4" value="2"></add>
505<add key="ID7Num5" value="4"></add>
506<add key="ID7Num6" value="3"></add>
507<add key="ID7Num7" value="1"></add>
508<add key="ID7Num8" value="1"></add>
509<add key="ID7Num9" value="4"></add>
510<add key="ID7Num10" value="5"></add>
511<add key="ID7Num11" value="8"></add>
512<add key="ID7Num12" value="2"></add>
513<add key="ID7Num13" value="2"></add>
514<add key="ID7Num14" value="2"></add>
515<add key="ID7Num15" value="2"></add>
516<add key="ID7Num16" value="2"></add>
517<add key="ID7Num17" value="2"></add>
518<add key="ID7Num18" value="2"></add>
519<add key="ID7Num19" value="2"></add>
520<add key="ID7Num20" value="2"></add>
521<add key="ID7Num21" value="2"></add>
522<add key="ID7Num22" value="2"></add>
523<add key="ID7Num23" value="2"></add>
524<add key="ID7Num24" value="2"></add>
525<add key="ID7Num25" value="2"></add>
526<add key="ID8Num1" value="2"></add>
527<add key="ID8Num2" value="5"></add>
528<add key="ID8Num3" value="4"></add>
529<add key="ID8Num4" value="2"></add>
530<add key="ID8Num5" value="4"></add>
531<add key="ID8Num6" value="3"></add>
532<add key="ID8Num7" value="1"></add>
533<add key="ID8Num8" value="1"></add>
534<add key="ID8Num9" value="4"></add>
535<add key="ID8Num10" value="5"></add>
536<add key="ID8Num11" value="8"></add>
537<add key="ID8Num12" value="2"></add>
538<add key="ID8Num13" value="2"></add>
539<add key="ID8Num14" value="2"></add>
540<add key="ID8Num15" value="2"></add>
541<add key="ID8Num16" value="2"></add>
542<add key="ID8Num17" value="2"></add>
543<add key="ID8Num18" value="2"></add>
544<add key="ID8Num19" value="2"></add>
545<add key="ID8Num20" value="2"></add>
546<add key="ID8Num21" value="2"></add>
547<add key="ID8Num22" value="2"></add>
548<add key="ID8Num23" value="2"></add>
549<add key="ID8Num24" value="2"></add>
550<add key="ID8Num25" value="2"></add>
551<add key="ID9Num1" value="2"></add>
552<add key="ID9Num2" value="5"></add>
553<add key="ID9Num3" value="4"></add>
554<add key="ID9Num4" value="2"></add>
555<add key="ID9Num5" value="4"></add>
556<add key="ID9Num6" value="3"></add>
557<add key="ID9Num7" value="1"></add>
558<add key="ID9Num8" value="1"></add>
559<add key="ID9Num9" value="4"></add>
560<add key="ID9Num10" value="5"></add>
561<add key="ID9Num11" value="8"></add>
562<add key="ID9Num12" value="2"></add>
563<add key="ID9Num13" value="2"></add>
564<add key="ID9Num14" value="2"></add>
565<add key="ID9Num15" value="2"></add>
566<add key="ID9Num16" value="2"></add>
567<add key="ID9Num17" value="2"></add>
568<add key="ID9Num18" value="2"></add>
569<add key="ID9Num19" value="2"></add>
570<add key="ID9Num20" value="2"></add>
571<add key="ID9Num21" value="2"></add>
572<add key="ID9Num22" value="2"></add>
573<add key="ID9Num23" value="2"></add>
574<add key="ID9Num24" value="2"></add>
575<add key="ID9Num25" value="2"></add>
576<add key="ID10Num1" value="2"></add>
577<add key="ID10Num2" value="5"></add>
578<add key="ID10Num3" value="4"></add>
579<add key="ID10Num4" value="2"></add>
580<add key="ID10Num5" value="4"></add>
581<add key="ID10Num6" value="3"></add>
582<add key="ID10Num7" value="1"></add>
583<add key="ID10Num8" value="1"></add>
584<add key="ID10Num9" value="4"></add>
585<add key="ID10Num10" value="5"></add>
586<add key="ID10Num11" value="8"></add>
587<add key="ID10Num12" value="2"></add>
588<add key="ID10Num13" value="2"></add>
589<add key="ID10Num14" value="2"></add>
590<add key="ID10Num15" value="2"></add>
591<add key="ID10Num16" value="2"></add>
592<add key="ID10Num17" value="2"></add>
593<add key="ID10Num18" value="2"></add>
594<add key="ID10Num19" value="2"></add>
595<add key="ID10Num20" value="2"></add>
596<add key="ID10Num21" value="2"></add>
597<add key="ID10Num22" value="2"></add>
598<add key="ID10Num23" value="2"></add>
599<add key="ID10Num24" value="2"></add>
600<add key="ID10Num25" value="2"></add>
601</appsettings>
602</configuration></num;i++)></num)></min)></min)>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus