【问题标题】:Displaying a 2d data array from a console application从控制台应用程序显示二维数据数组
【发布时间】:2015-12-24 06:39:20
【问题描述】:

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

我的问题是,由于我只使用控制台应用程序,我不知道我需要做什么才能应用代码。

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

【问题讨论】:

  • 标签winform有两个很棒的教程链接在tag-wiki的末尾
  • 你真的需要使用控制台吗?恐怕在这种情况下你不能使用 DataGridView 。您可以使用 WinForms 项目,或编写一些其他代码。像 foreach(var line in myArray) { foreach(int elem in line) { string s = String.Format("{0}\t",elem); Console.Write(s); } }
  • 您的问题解决了吗?
  • @TaW 我最终使用了图形对象和图片框,并转向了 Windows 窗体,但是阅读您所写的内容非常有趣。非常感谢:D PS:这里有新问题:stackoverflow.com/questions/33454884/…

标签: c# winforms multidimensional-array datagridview


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

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

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

但是,当我们在这里回答问题时,充分了解情况总是有帮助的..

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

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

(我这里只有一个德语 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();
        }
    }
}

【讨论】:

  • 谢谢,很容易理解
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
相关资源
最近更新 更多