从控制台应用程序

时间:2015-09-26 15:51:44

标签: c# winforms multidimensional-array datagridview

我知道已经创建并关闭了一些线程(如2-dimensional Integer array to DataGridView

我的问题是,因为我只使用控制台应用程序,所以我不知道为了应用代码我需要做什么。

到目前为止,我已经拖放了一个新的dataGridView并选择了program.cs(我的主要部分)作为源。现在,当我在program.cs中应用上述链接中的代码时,visualstudio表示dataGridView1“在当前上下文中不存在”。当我尝试事先声明它时,我得到了无法找到类型/命名空间。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

  • 关于你得到的错误:你需要做的就是添加命名空间:using System.Windows.Forms;以及对它的引用!这适用于控制台应用程序。当然它永远不会出现,但除此之外你可以利用它的能力..

  • 但真正的问题是:您想要实现什么?为什么要坚持使用控制台应用程序?

这并不是说你可能没有充分的理由!例如,有时需要在没有显示屏的情况下运行服务应用程序。这仍然可以从DataGridViewsChart控件创建输出..

但是,当我们在这里回答问题时,完全了解情况总是有帮助的。

以下示例创建并填充DataGridView DGV,然后将数据图像保存到png文件。

enter image description here

为此,您还需要添加System.Drawing。对于Windows.Forms,您需要添加using子句和引用:

enter image description here

(我这里只有一个德国VS版本;而不是'Aktuell'(即'当前')组,你应该搜索'框架'中的引用!结果是一样的 - 我选择了另一个因为它在截图上没有那么大..)

一旦参考文献到位......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;        // <--- add namespace AND reference!!
using System.Drawing;             // <--- add namespace AND reference!!

..这个简单的控制台应用程序将编译并运行:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataGridView DGV = new DataGridView();
            List<string> test = new List<string>() 
            { "Anna", "Bertha", "Carol", "Doreen", "Erica", "Fran", "Gisa" };
            DGV.Columns.Add("No", "Number");
            DGV.Columns.Add("Name", "Name");
            DGV.Columns.Add("Age", "Age");
            DGV.Columns["Name"].DefaultCellStyle.Font = 
                                             new Font(DGV.Font, FontStyle.Bold);
            for (int i = 0; i < test.Count; i++) DGV.Rows.Add(new[]
                { (i + 1)+ "", test[i], i + 21 +""}); // cheap string array
            DGV.ScrollBars = ScrollBars.None;
            DGV.AllowUserToAddRows = false;
            DGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            DGV.RowHeadersVisible = false;
            var width = DGV.Columns.GetColumnsWidth(DataGridViewElementStates.None);
            DGV.ClientSize = new Size(width,  
                         DGV.ColumnHeadersHeight + DGV.RowCount * (DGV.Rows[0].Height) );
            Bitmap bmp = new Bitmap(DGV.ClientSize.Width, DGV.ClientSize.Height);
            DGV.DrawToBitmap(bmp, DGV.ClientRectangle);
            bmp.Save("D:\\testDGV.png", System.Drawing.Imaging.ImageFormat.Png);
            bmp.Dispose();
        }
    }
}