DataGridView

春Mのグリッド表示のためのコンポーネントを探していたのだが、DataGridViewで良いらしい。とりあえずDataGridViewを使って、春Mっぽい画面を作ってみる。

データとか全部決めうちだが、だいぶ春Mっぽくなった。
DataGridViewは単に文字表示するだけに使うには多機能すぎるので、もしかしたら将来全部自前で描画してしまったほうがよいかもしれない。以下ソース。

using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;

namespace WinApp {
  public class TestForm : Form {
    const int ColumnWidth = 300;
    Color DefaultColor = ColorTranslator.FromHtml("#E3FFF3");
    DataGridView dgv = new DataGridView();

    void addFile(){
      string cdir = Directory.GetCurrentDirectory();
      string [] dirs = Directory.GetDirectories(cdir);
      string [] files = Directory.GetFiles(cdir);
      int i = 2;
      foreach (string d in dirs) {
         dgv[0,i].Value = " <" + Path.GetFileName(d) + "> ";
         i++;
      }
      foreach (string f in files) {
         dgv[0,i].Value = " " + Path.GetFileName(f) + " ";
         i++;
      }
    }

    public TestForm() {
      ClientSize = new Size(603, 403);
      Controls.Add(dgv);
      dgv.Dock = DockStyle.Fill;
      dgv.ReadOnly = true;
      dgv.BorderStyle = BorderStyle.Fixed3D;
      dgv.BackgroundColor = DefaultColor;
      dgv.DefaultCellStyle.BackColor = DefaultColor;
      dgv.DefaultCellStyle.Font = new Font("MS ゴシック",12,FontStyle.Regular);
      dgv.CellBorderStyle = DataGridViewCellBorderStyle.None;
      dgv.ColumnCount = 2;
      dgv.RowCount = 20;
      foreach (DataGridViewColumn col in dgv.Columns){
         col.Width = ColumnWidth;
      }
      dgv[0,0].Value = " <.> ";
      dgv[0,1].Value = " <..> ";
      addFile();
      dgv.ColumnHeadersVisible = false;
      dgv.RowHeadersVisible = false;
      dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
      Text = "TestForm";
    }

    [STAThread]
    static void Main() {
      Application.Run(new TestForm());
    }
  }
}