none
How to build an empty table? RRS feed

答案

全部回复

  • DataTable master = new DataTable();

    master.Columns.Add("Id", typeof(int));
    master.Columns.Add("Name", typeof(string));

    或者

    DataTable dt = YourExistsDataTable.Clone();

    知识改变命运,奋斗成就人生!
    2010年3月2日 4:30
    版主
  • Hi,keivn_shanxi!
         Please told me What is "empty table"?
    周雪峰
    2010年3月2日 6:31
    版主
  • 在.net 整个框架里,有非常多的table,上面的几位朋友有的HashTable,有的DataTable,还有Html中的Table,还有asp.net中也有个 Table的控件,所以说雪峰就问了What is "empty table"? 确实,要指明你的使用情况呀。

    山西.net俱乐部
    2010年3月2日 7:44
    版主
  • 就是一个空表,X轴是小时(0,2,4.....24),Y轴是数据(0—18),我的方法是:
                  ChartArea chartArea1 = new ChartArea();
                  chart1.ChartAreas.Add(chartArea1);
                  chart1.ChartAreas[0].AxisX.Enabled = AxisEnabled.True;//打开chartAreas的AxisX与AxisY
                chart1.ChartAreas[0].AxisY.Enabled = AxisEnabled.True;

                chart1.ChartAreas[0].AxisX.Title = "时间(H)";//设置坐标标题
                chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Far;
                chart1.ChartAreas[0].AxisX.IsMarginVisible = false;
                chart1.ChartAreas[0].AxisY.Title = "压力(Mpa)";
                chart1.ChartAreas[0].AxisY.TitleFont = new Font("Times New Roman", 7, FontStyle.Regular);//设置坐标标题的字体
                chart1.ChartAreas[0].AxisX.TitleFont = new Font("Times New Roman", 7, FontStyle.Regular);
                chart1.ChartAreas[0].AxisX.LineWidth = 2;
                chart1.ChartAreas[0].AxisY.LineWidth = 2;
                chart1.ChartAreas[0].AxisY.TitleAlignment = StringAlignment.Center;
                chart1.ChartAreas[0].AxisY.IsMarginVisible = false;
                chart1.ChartAreas[0].AxisX.Interval =2;
               
                chart1.ChartAreas[0].AxisY.Interval = 2;
     // Set Border Style
                chart1.ChartAreas[0].BorderDashStyle = ChartDashStyle.Solid;

                // Set Border Width
                chart1.ChartAreas[0].BorderWidth = 1;


                chart1.ChartAreas[0].AxisX.Minimum = 0;
                chart1.ChartAreas[0].AxisX.Maximum = 24;
                chart1.ChartAreas[0].AxisY.Minimum =0;
                chart1.ChartAreas[0].AxisY.Maximum = 18;


                chart1.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
                chart1.ChartAreas[0].AxisY.MajorTickMark.Enabled = false;

                chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
                chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(-1, 1, "0");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(1, 3, "2");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(3, 5, "4");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(5, 7, "6");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(7, 9, "8");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(9, 11, "10");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(11, 13, "12");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(13, 15, "14");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(15, 17, "16");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(17, 19, "18");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(19, 21, "20");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(21, 23, "22");
                chart1.ChartAreas[0].AxisX.CustomLabels.Add(23, 25, "24");

                chart1.ChartAreas[0].AxisY.CustomLabels.Add(-1, 1, "0");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(1, 3, "2");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(3,5 , "4");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(5, 7, "6");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(7, 9, "8");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(9, 11, "10");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(11, 13, "12");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(13, 15, "14");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(15, 17, "16");
                chart1.ChartAreas[0].AxisY.CustomLabels.Add(17, 19, "18");
              
              
                Font myfont = new Font("宋体", 8, FontStyle.Regular);
                chart1.ChartAreas[0].AxisX.LabelStyle.Font =myfont ;
                chart1.ChartAreas[0].AxisY.LabelStyle.Font = myfont;

    现在还有一个问题,我想再这个空表中,添加即时曲线,从0点开始,没分钟曲线往前走一下,代码如下:
     private void timer1_Tick(object sender, EventArgs e)
            {
                            series1.Points.AddY( random.Next(0, 18));
            }
    但这样point点只有24个,您能帮我解决一下吗,谢谢

               

           

    2010年3月2日 8:00
  • 看你的描述,这里的更像是数据结构的表,而并非数据类型的表。

    c#对二维表支持比较差(起码很烦人),由于你这里的维数是确定的,那就改成一维数组,要好处理的多,比如

    // 定义一个一维的数组放所有数据
    MyDataType[] charTable = new MyDataType[24*18];

    对于坐标(x,y)的访问就映射成 (x+y*24),反过来也一样,可以轻松搞定二维表结构。

    这样的话,就能够存放下表中所有点了,第二个问题应该也能解决了。

    如没理解对,还请说明一下问题,原来的似乎说的不是很明白。
    霸王
    2010年3月7日 12:55
  • 呵呵,这是关于MSCHART控件的,这控件非常好用,需要的话我传给你
    2010年3月16日 8:24
  • 您是希望有连续的点吗?一般来说如果画满了,要把之前画的点 (从 0 开始) 擦掉,就像 Performance Monitor 的效果一样。

    现在为止我还没有看到 Microsoft Chart Control 支持动态平移坐标的。。。


    Mark Zhou
    2010年3月16日 9:09
  • 您好,桂素伟,我也是山西的,您能告我怎么加入山西.net俱乐部

    2010年3月20日 5:09