.NET DataGridViewで行末尾追加を実現するには?

.NET DataGridViewで行末尾に、行追加できないようです。以下の行追加試しました。

AIによると DataSource を追加しないといけないと言われます。ちょっと面倒すぎです。別の手を考えました。

追加用のダミー末尾を追加して、見せないようにします。コード例は CLI です。

private: System::Windows::Forms::DataGridView^  dgrdSend;

  ・・・中略・・・
 
private: System::Void Form1_Load(  System::Object^  sender,  System::EventArgs^  e) 
{
  ・・・中略・・・
	dgrdSend->RowCount = 2;
	dgrdSend->Rows[0]->Cells[1]->Value = "1000";	// デフォルト送信データ行
	dgrdSend->Rows[0]->Cells[2]->Value = "0";
	dgrdSend->Rows[1]->Height = 0;				// 送信データ行追加用ダミー(Addで末尾追加未サポのため)
	dgrdSend->Rows[1]->ReadOnly = true;
	// dgrdSend->Rows[1]->Visible = false;   -> エラーになる
	// dgrdSend->Rows[1]->Resizable = false; -> エラーになる
	dgrdSend->AllowUserToResizeRows = false;	// 全体に行リサイズ変更はOK
  ・・・中略・・・
}

		int		selectedRowSndData;			// 選択中の送信データ行

/* ****************************************************************************
 * 機能名 : 送信データ追加
 * ***************************************************************************/
private: System::Void menuAddSendItem_Click(
	System::Object^ sender, 
	System::EventArgs^ e 
) {
	selectedRowSndData ++;
	dgrdSend->Rows->Insert( selectedRowSndData, 1 );
}

/* ****************************************************************************
 * 機能名 : 送信データ挿入
 * ***************************************************************************/
private: System::Void menuInsertSendItem_Click(
	System::Object^ sender, 
	System::EventArgs^ e 
) {
	dgrdSend->Rows->Insert( selectedRowSndData, 1 );
}

実行結果です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です