none
DataGridViewで特定の列に列番号を自動入力させたい RRS feed

  • 質問

  • いつもお世話になっています。

    フォーム内の、DataGridViewの列の列番号を特定列に表示させたいのですが、どうすればよいのかよくわかりません。

    private void dataGridView_Number()
            {
                for (int i = 0; i < dataGridView1.Columns.Count; ++i)
                {
                    dataGridView1.Rows[i].Cells[0].Value = Convert.ToInt32(this.dataGridView1.CurrentCell.ColumnIndex);
                }
            }


    試しに、上記のようなソースコードを書いて実行してみましたが、実行すると

    System.ArgumentOutOfRangeException が発生しました
      HResult=0x80131502
      Message=インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
    パラメーター名:index

    というエラーが出ます。

    どうすればよいのでしょうか?

    2018年1月9日 1:05

回答

  • であれば、以下のような感じでしょうか?

    private void dataGridView_Number()
    {
        for (int i = 0; i < dataGridView1.Rows.Count; ++i)
        {
            dataGridView1.Rows[i].Cells[0].Value = i;
        }
    }
    #上記のコードは実際に動作確認をしておりません。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク chmod_777 2018年1月10日 0:52
    2018年1月9日 7:18
    モデレータ

すべての返信

  • forは列の数だけ回していますが、それを
    dataGridView1.Rows[i]
    と、i、すなわち列のインデックスを行のインデックスと使っています。
    おそらく、この辺りの考え方に誤りがありますが、実際、どのようなことをされたいのかもう少し具体的に書いていただけると、回答も具体的に得られると思います。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク chmod_777 2018年1月9日 4:14
    • 回答としてマークされていない chmod_777 2018年1月9日 7:14
    2018年1月9日 1:27
    モデレータ
  • forは列の数だけ回していますが、それを
    dataGridView1.Rows[i]
    と、i、すなわち列のインデックスを行のインデックスと使っています。
    おそらく、この辺りの考え方に誤りがありますが、実際、どのようなことをされたいのかもう少し具体的に書いていただけると、回答も具体的に得られると思います。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    あるテキストボックスに値を入力すると、DataGridViewに入力した値の行を追加するプログラムを作成しております。

    ここで、行が追加される際に列番号も入力されるようにしたいのです。

    2018年1月9日 1:52
  • 列番号とは具体的にどのようなものでしょうか? 単純に左から数えて何番目であるとか、そうではなく、列毎に特定の番号が割り当ててあって、その番号であるとかでしょうか?
    いずれにしましても、もう少し詳細にやりたいことを説明されて、今書いているコードを支障ない範囲で提示されると、的確な回答が早く付きやすくなると思います。
    実際、私の方でもサンプルコードは書けますが、どのようなことを実現されたいのかの情報が足らないため、どのようなサンプルコードを作成して良いかわからない状態です。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2018年1月9日 4:57
    モデレータ
  • 列番号ではなく、行番号でした。

    行番号を、特定列のセルに行が追加されるたびに自動入力させたいのです。

    2018年1月9日 7:15
  • であれば、以下のような感じでしょうか?

    private void dataGridView_Number()
    {
        for (int i = 0; i < dataGridView1.Rows.Count; ++i)
        {
            dataGridView1.Rows[i].Cells[0].Value = i;
        }
    }
    #上記のコードは実際に動作確認をしておりません。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク chmod_777 2018年1月10日 0:52
    2018年1月9日 7:18
    モデレータ
  • うまく動作しました、ありがとうございました。
    2018年1月10日 0:52