none
DataGridViewのAddの挙動 RRS feed

  • 質問

  • お世話になっております。

    素人質問で申し訳ないのですが、Addの挙動について疑問があり質問させて頂きました。

    A:通常のAdd(MSDNコード転載)

    通常といいますか、Add()は行が最終行に追加されていきます。

    B:値を設定した場合

    今度は、Insert()の様な挙動が見られます。

    これは、どういうことなのでしょうか?

    値を設定すると、Add()なのに直前に入れるということでしょうか?

    2015年8月20日 2:36

回答

  • 先頭に*が付いている行は、新規に行を追加するために入力する領域です。ここではこの行のことを新規入力行と呼ぶことにします。
    さて、新規入力行は実在している行ではありません。あくまで入力域です。よって、常に一番最後に存在します。
    Aのパターンは新規入力行を全く使っていません。DataGridViewに直接行を追加しています。
    Bは新規入力行に対して"a"を入力しています。よって、常に一番最後に表示されているのです。ちなみに新規入力行に値を入れただけでは、実際にはDataGridViewに行が追加されていません。あくまで、入力途中であり、行追加はまだ完了していません。


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

    • 回答としてマーク コーベル 2015年8月20日 4:29
    2015年8月20日 3:47
    モデレータ
  • Add()の挙動ではなく、新規レコード行の挙動です。新規レコード行についてどう扱いたいかを決めるべきです。

    新規レコード行には*が付けられ、常に最終行に存在します。不要であればAllowUserToAddRowsプロパティに flase を設定すべきです。

    • 回答としてマーク コーベル 2015年8月20日 4:29
    2015年8月20日 3:01

すべての返信

  • Add()の挙動ではなく、新規レコード行の挙動です。新規レコード行についてどう扱いたいかを決めるべきです。

    新規レコード行には*が付けられ、常に最終行に存在します。不要であればAllowUserToAddRowsプロパティに flase を設定すべきです。

    • 回答としてマーク コーベル 2015年8月20日 4:29
    2015年8月20日 3:01
  • 先頭に*が付いている行は、新規に行を追加するために入力する領域です。ここではこの行のことを新規入力行と呼ぶことにします。
    さて、新規入力行は実在している行ではありません。あくまで入力域です。よって、常に一番最後に存在します。
    Aのパターンは新規入力行を全く使っていません。DataGridViewに直接行を追加しています。
    Bは新規入力行に対して"a"を入力しています。よって、常に一番最後に表示されているのです。ちなみに新規入力行に値を入れただけでは、実際にはDataGridViewに行が追加されていません。あくまで、入力途中であり、行追加はまだ完了していません。


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

    • 回答としてマーク コーベル 2015年8月20日 4:29
    2015年8月20日 3:47
    モデレータ
  • 佐祐理さん、trapemiyaさん、ご回答ありがとうございます。

    なるほど、本当に理解できました。

    いつも、丁寧な解説で理解しやすいです。

    ありがとうございました!

    不要であればAllowUserToAddRowsプロパティに flase を設定すべきです。

    上記設定において正常?に動作しました。ありがとうございました。

    よって、常に一番最後に表示されているのです。ちなみに新規入力行に値を入れただけでは、実際にはDataGridViewに行が追加されていません。あくまで、入力途中であり、行追加はまだ完了していません。

    丁寧な説明、ありがとうございました。
    仕組みが理解できました。

    2015年8月20日 4:29