![見出し画像](https://assets.st-note.com/production/uploads/images/38269641/rectangle_large_type_2_3e473e8c84738de033116cc6ed67ebb2.png?width=1200)
DataGridView(04)
目的
VisualStudio 2019 上の C#言語と .Net Framework を用いて、データを定義したり、操作したり、画面上に表示したりというようなことについて、さまざまな角度から説明します。
基本的に、「このとおりにやれば、確実に、プログラムは動く」というものを目指しています。
今回の目的は、「Nullのセルの場所に「未入力」のような文字を表示させる」です。
準備
前回までのソースコードを少し変更して、次のようなコードを考えます。
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();
}
}
}
環境設定
このプログラムを動かすために方法を、最初から述べると次のとおりです。
1) Visual Studio を起動します
2) 新しいプロジェクトを作成します
3) Windows フォームアプリケーション (.NET Framework) を選択します
4) 次へを押します
5) DGV04 と入力します
6) エディターが現れるので、上のプログラムを入力します。
7) 実行できるかどうかは、開始ボタンを押してください。
実行画面
次のような画面になるはずです。
今回の改良
上の図をみるとわかるとおり、空欄がすべて空白になっています。しかし、もしかすると空白ではなくて、「空白文字」が入力されているのかもしれません。「なにも文字が入力されてないのか」「空白文字が入力されているか」を区別するために、完全にブランクな場所には、なんらかの表示があるようにしてみます。具体的には、一番最後の行に次のように入力するだけです。
dgv.DefaultCellStyle.NullValue = "[未]";
こうすると、次のようになります。
データを入力してみると
データを入力してみます。数字や文字、それに、全角および半角の空白文字です。
上のとおり、いろいろな情報を入力してみました。「20」のところにカーソルをあわせると、内容が「 20 」になっています。
空白のところにカーソルをあわせると、内容が「 」となっています。