1. ホーム
  2. シーピー

HeaderCellに行番号を表示するC# DataGridViewメソッド

2022-03-02 15:22:36
<パス

より転載。

http://blog.csdn.net/gane_cheng/article/details/52163912

http://www.ganecheng.tech/blog/52163912.html (拡大図)

C#でWinFormアプリケーションを開発する場合、DataGridViewはよく使うテーブルデータコントロールです。このコントロールを使用する場合、今どの行を操作しているのかを簡単に把握するために、最初の列に行番号を表示する必要があることがよくあります。

今回は2つの表示方法を用意しました。

  • 1つは、HeaderCellに直接表示する方法です。
  • もう一方はデータ欄に表示されます。

データ列上に表示することのデメリットは明らかです。一般に私たちはデータセットの列を占有しなければならないデータをDataGridViewに表示しますが、元のデータセットと関係のない行番号をデータセットに追加することは、高結合・低結合の原則に反します。さらに重要なことは、データセットから行を挿入または削除する必要がある場合、影響を受けるすべての行番号を修正してからDataGridViewにレンダリングする必要があり、特にデータ量が比較的多い場合は非常に不便です。

そこで、ここではHeaderCell内の表示を利用する。

最初のステップ

DataGridViewコントロールを選択し、イベントボタンをクリックして、RowStateChangedを見つけ、右側の空白のテキストボックスをダブルクリックして、自動的にイベントをバインドし、メソッドを生成します。

メソッドに以下のコードを記述します。

private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
    // Display on HeaderCell
    for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
    {
        DataGridViewRow r = this.dataGridView1.Rows[i];
        r.HeaderCell.Value = string.Format("{0}", i + 1);
    }
    this.dataGridView1.Refresh();
}

この時点での効果は、次のとおりです。

なお、青丸で囲った部分には、行番号が表示しきれないので、ご注意ください。

ステップ2

行番号が完全に表示されない場合の解決策は、DataGridView の RowHeadersWidthSizeMode プロパティを AutoSizeToAllHeaders、AutoSizeToDisplayedHeaders、または AutoSizeToFirstHeader に設定することです。

最終的には、次のようになります。

デモソースコードダウンロードアドレス

http://download.csdn.net/detail/gane_cheng/9599154