見出し画像

DataGridView(04)

目的

画像1

VisualStudio 2019 上の C#言語と .Net Framework を用いて、データを定義したり、操作したり、画面上に表示したりというようなことについて、さまざまな角度から説明します。

基本的に、「このとおりにやれば、確実に、プログラムは動く」というものを目指しています。

今回の目的は、「Nullのセルの場所に「未入力」のような文字を表示させる」です。

準備

画像2

前回までのソースコードを少し変更して、次のようなコードを考えます。

using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace DGV04
{
   // Nullのセルの場所に「未入力」のような文字を表示させる

   public partial class Form1 : Form
   {
       DataTable dt; //     元のデータ
       DataGridView dgv; // 実際に表示するもの
       Label L1, L2; // 表示用ラベル

       private void dgv_Enter()
       {
           int x = dgv.CurrentCellAddress.X;
           int y = dgv.CurrentCellAddress.Y;

           L1.Text = "座標 (" + x.ToString() + "," + y.ToString() + ")";
           L2.Text = "内容 (" + dt.Rows[y][x] + ")";
       }

       public Form1()
       {
           InitializeComponent();

           // アプリケーション全体
           this.Text = "データグリッドビュー DGV04"; // アプリケーションのタイトル
           this.Size = new Size(1400, 850); //          アプリケーション全体の大きさ
           StartPosition = FormStartPosition.Manual; // 起動時の位置を設定する
           DesktopLocation = new Point(20, 20); //      起動時の位置

           // データ作成
           dt = new DataTable();
           dt.Columns.Add("番号");
           dt.Columns.Add("氏名");
           dt.Columns.Add("点数");
           for (int i = 0; i < 10; i++)
           {
               DataRow dr = dt.NewRow();
               dt.Rows.Add(dr);
           }

           // データグリッドビュー
           dgv = new DataGridView();
           dgv.Size = new Size(1340, 740);   // 表の大きさ
           dgv.Location = new Point(20, 50); // 表の位置
           dgv.AllowUserToAddRows = false; // 一番下の追加の行を見せない
           dgv.DataSource = dt;    // データとデータグリッドビューを接続
           this.Controls.Add(dgv); // 画面に表示

           // 「現在の自分の位置を示すラベル」の設定
           L1 = new Label();                   // ラベルをつくる
           L1.Location = new Point(20, 5);     // ラベルの位置
           L1.Size = new Size(200, 40);        // ラベルのサイズ
           L1.BackColor = Color.LightPink;     // ラベルの背景色
           L1.Text = "座標 L1";               // ラベルに表示する文字
           L1.Font = new Font("メイリオ", 18); // ラベルの文字種や大きさ
           L1.TextAlign = ContentAlignment.MiddleCenter; // 文字をラベルの中心に表示する
           this.Controls.Add(L1);              // ラベルを表示させる

           // 「現在地のセルの内容を示すラベル」の設定
           L2 = new Label();                   // ラベルをつくる
           L2.Location = new Point(240, 5);    // ラベルの位置
           L2.Size = new Size(200, 40);        // ラベルのサイズ
           L2.BackColor = Color.LightCyan;     // ラベルの背景色
           L2.Text = "内容 L2";               // ラベルに表示する文字
           L2.Font = new Font("メイリオ", 18); // ラベルの文字種や大きさ
           L2.TextAlign = ContentAlignment.MiddleCenter; // 文字をラベルの中心に表示する
           this.Controls.Add(L2);              // ラベルを表示させる

           dgv.CellEnter += (s, e) => dgv_Enter();
       }
   }
}

環境設定

画像3

このプログラムを動かすために方法を、最初から述べると次のとおりです。

1) Visual Studio を起動します

画像4

2) 新しいプロジェクトを作成します

画像5

3) Windows フォームアプリケーション (.NET Framework) を選択します

画像6

4) 次へを押します

画像7

5) DGV04 と入力します

6) エディターが現れるので、上のプログラムを入力します。

7) 実行できるかどうかは、開始ボタンを押してください。

画像8


実行画面

画像9

次のような画面になるはずです。

画像10


今回の改良

画像11

上の図をみるとわかるとおり、空欄がすべて空白になっています。しかし、もしかすると空白ではなくて、「空白文字」が入力されているのかもしれません。「なにも文字が入力されてないのか」「空白文字が入力されているか」を区別するために、完全にブランクな場所には、なんらかの表示があるようにしてみます。具体的には、一番最後の行に次のように入力するだけです。

dgv.DefaultCellStyle.NullValue = "[未]";

画像12

こうすると、次のようになります。

画像13


データを入力してみると

画像14

データを入力してみます。数字や文字、それに、全角および半角の空白文字です。

画像16

上のとおり、いろいろな情報を入力してみました。「20」のところにカーソルをあわせると、内容が「 20 」になっています。

画像15

空白のところにカーソルをあわせると、内容が「   」となっています。



この記事が気に入ったらサポートをしてみませんか?