'■フォームにパネルとボタンをを貼り付けて以下のように変更してください


public class Form1 : System.Windows.Forms.Form
{
	//ここにいろいろあって・・・・・・・・・
	//フォームロードイベントを追加し開始時に下の方にあるForm1_Load関数を呼ぶ必要があります。

	CustomDataGrid DataGrid1= new CustomDataGrid();
	DataSet dataSet1 = new DataSet("dataSet1");

	DataTable dataTable1;

	//DataGridの作成と初期化、一度しか読み出せません
	private void GridInit()
	{
		DataGrid1.Font = this.Font;

		//ヘッダーに線を引く
		DataGrid1.headerLine = true;

		//タブキーを押されたときに移動するコントロールの指定
		DataGrid1.NextControl = button1;
		panel1.BorderStyle = BorderStyle.FixedSingle;
		panel1.Controls.Add(DataGrid1);
		//Panelの中央に貼り付けます
		DataGrid1.Dock = DockStyle.Fill;
		//ボーダースタイルの変更
		DataGrid1.BorderStyle = BorderStyle.None;
		//行のヘッダーを消す
		//      DataGrid1.ColumnHeadersVisible = false;

		//新しい行の追加、編集、削除を禁止する
		DataGrid1.ReadOnly = true;
		//Captionの表示を消します
		DataGrid1.CaptionVisible = false;

		// テーブルのスタイルを作成
		DataGridTableStyle dgTableStyle = new DataGridTableStyle();
		dgTableStyle.MappingName = dataTable1.TableName;

		// *** 列ヘッダーによるソートを禁止 ***
		dgTableStyle.AllowSorting = false;
		//列のヘッダを消す
		dgTableStyle.RowHeadersVisible = false;

		//ラインカラーの変更
		dgTableStyle.GridLineColor = Color.Black;

		DataGrid1.TableStyles.Add(dgTableStyle);

		//1行おきに色をつける
		dgTableStyle.AlternatingBackColor = Color.FromArgb(220, 255, 255);

		DataColumn dataClumn1= dataTable1.Columns.Add();
		DataColumn dataClumn2 = dataTable1.Columns.Add();
		DataColumn dataClumn3 = dataTable1.Columns.Add();
		DataColumn dataClumn4 = dataTable1.Columns.Add();

		// テーブルの列のスタイルを作成
		ColorDataGridTextBoxColumn dgColumnStyle1 =new ColorDataGridTextBoxColumn();
		DataGridTextBoxColumn dgColumnStyle2 = new DataGridTextBoxColumn();
		DataGridTextBoxColumn dgColumnStyle3 =new DataGridTextBoxColumn();
		DataGridTextBoxColumn dgColumnStyle4 = new DataGridTextBoxColumn();

		dgColumnStyle1.MappingName = dataClumn1.ColumnName;
		dgColumnStyle2.MappingName = dataClumn2.ColumnName;
		dgColumnStyle3.MappingName = dataClumn3.ColumnName;
		dgColumnStyle4.MappingName = dataClumn4.ColumnName;

		//列の幅を決定
		dgColumnStyle1.Width = 100;
		dgColumnStyle2.Width = 50;
		dgColumnStyle3.Width = 50;
		dgColumnStyle4.Width = 50;

		//列の右ぞろえ、中央ぞろえ、左ぞろえを設定
		dgColumnStyle1.Alignment = HorizontalAlignment.Center;
		dgColumnStyle2.Alignment = HorizontalAlignment.Left;
		dgColumnStyle3.Alignment = HorizontalAlignment.Right;
		dgColumnStyle4.Alignment = HorizontalAlignment.Right;

		//ヘッダーのテキストを設定
		dgColumnStyle1.HeaderText = "       いなば";	//2002ではバグがあり、Centerをスペースでごまかしています。
		dgColumnStyle2.HeaderText = "てすと";
		dgColumnStyle3.HeaderText = "こんにちは";
		dgColumnStyle4.HeaderText = "世界";

		//列のスタイルをテーブル・スタイルに登録
		dgTableStyle.GridColumnStyles.Add(dgColumnStyle1);
		dgTableStyle.GridColumnStyles.Add(dgColumnStyle2);
		dgTableStyle.GridColumnStyles.Add(dgColumnStyle3);
		dgTableStyle.GridColumnStyles.Add(dgColumnStyle4);
	}


	//何度でも読み出して表の値を書き換えられます。
	private void GridShow()
	{
		//重い処理の可能性があるためカーソルを砂時計に換える
		Cursor BkCur= Cursor.Current; //現在のカーソルを取っておく
		Cursor.Current = Cursors.WaitCursor; //砂時計カーソルに入れ替える

		//選択行を取得
		int line = DataGrid1.GetTopRow();
		//先頭行を設定 存在しない行を指定するとエラーになる
		DataGrid1.SetTopRow(0);

		//データグリッドの更新前に列ヘッダーによるソートを保存する
		bool sortpos = DataGrid1.TableStyles[dataTable1.TableName].AllowSorting;
		DataGrid1.TableStyles[dataTable1.TableName].AllowSorting = false;

		//テーブルの要素を消去
		dataTable1.Rows.Clear();

		//テーブルにデータを追加
		int i;
		for(i = 0;i<100;i++)
		{
			dataTable1.Rows.Add(new string[] {"今日は"+i.ToString(), "せいてん", i.ToString(),i.ToString()});
		}
		//データグリッドにテーブルを表示する
		DataGrid1.SetDataBinding(dataSet1, dataTable1.TableName);

		//列ヘッダーによるソートを復元する
		DataGrid1.TableStyles[dataTable1.TableName].AllowSorting = sortpos;

		//選択行を設定 行数が変更される場合は存在しない行を指定するとエラーになる
		//DataGrid1.SetTopRow(line);
		Cursor.Current = BkCur; //取っておいたカーソルに戻す
	}

	//指定行を選択します
	//A specification line is chosen.
	private void lineSelected(int LineNo)
	{
		DataGrid1.CurrentCell = new DataGridCell(LineNo, 0);
		for(int i = 0;dataTable1.Rows.Count >i;i++)
		{
			DataGrid1.UnSelect(i);
		}
		DataGrid1.Select(LineNo);
		//DataGrid1.SetTopRow(LineNo)
		DataGrid1.Refresh();
	}

	//一行単位の選択に変更
	//It changes into selection of a party unit.
	private void DataGrid1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
	{
		if(!(dataTable1.Rows.Count <= 0))
		{
			DataGridCell Cell;
			Cell = DataGrid1.CurrentCell;
			//  .RowNumber     The selected sequence
			//  .ColumnNumber The selected sequence
			DataGrid1.Select(Cell.RowNumber); //A line is chosen.
		}
	}

	private void Form1_Load(object sender, System.EventArgs e)
	{
		DataGrid1.Paint += new System.Windows.Forms.PaintEventHandler(this.DataGrid1_Paint);
		dataTable1 = dataSet1.Tables.Add("Table1");
		GridInit();
		GridShow();
	}
}


▲トップページ