none
C#2010Express DataGridView RowをDeleteキーで削除するのになぜSelectionModeを・・・ RRS feed

  • 質問

  • C#2010Express DataGridView Row 行 削除 Delete Deleteキー SelectionMode

    Datatableで1次元配列を用意し、それをDatasetに含めた上で、DataGridViewにデータソースさせて作業しています。

    DGVに表示されている縦1列に並んだ表のうち1つをSelectした状態で、Deleteキーを押してみます。
    勿論、AllowUserToDeleteRowsはTrueです。

    なのに、全然反応してくれません。Deleteキー押下にイベントを発生させてやれば済む話ではありますが、
    SelectionModeをRowHeaderSelectからFullRowSelectに 切り替えたら、たちまちDeleteキーでSelectedRowを削除することが
    できました。

    なぜ、Deleteキーで行を削除しようとした場合、SelectionModeをRowHeaderSelectからFullRowSelectに予め切り替えて置かなければならないのですか?  RowHeaderSelectにしておく必然性もわたしにはありませんが、ちょっと疑問です。

    2011年4月11日 4:53

回答

  • おそらく、セルを選択してDeleteキーを押したのだと思いますが、
    この状態ではセルが選択されているだけで、行は選択されていない状態です。
    列が1つしかない場合はセルを選択したら行選択とみなす、というような判断は
    残念ながらDataGridView側ではやってくれません。
    なので、セルを選択した場合に行選択状態にする、という設定を行う必要があります。
    これが「FullRowSelect」にあたります。
    MSDNによりますと、以下のように書いてありますので参考にしてください。
    http://msdn.microsoft.com/ja-jp/library/3c89df86(v=vs.80).aspx


    なお、一列ではなく、試しに複数列のデータで試してみると分かりやすいと思います。
    • 回答としてマーク bianoide 2011年4月11日 10:04
    2011年4月11日 5:26

すべての返信