none
DataGridView 列が勝手に追加される RRS feed

  • 質問

  • こちらで質問するのは初めてです。失礼がございましたらお許しください。

     

    DataGridView について質問があります。

     

    1.DataGridViewを配置し、手動で列を追加します。

    2.DataGridViewのデータソースの選択を行います。

    3.DataGridViewを配置したフォームを閉じます。

    4.再び、同フォームを開きます。

     

    以上のような手順を踏むと、選択を行ったデータソースのカラムが

    列として、DataGridViewに勝手に追加されます。

     

    調べた結果、

    AutoGenerateColumns = Falseにすればよいということでしたので、

    Designer.vbに記述しようとしたところ、InitializeComponent()中に、

    AutoGenerateColumns = Falseという

    コードが自動生成されていました。

     

    アプリケーションを実行すると、AutoGenerateColumns = Falseは

    効いていて、最初に追加したカラムのみの表示なのですが、

    実行していないとき(開発中)には、勝手に追加されるカラムを

    表示しないようにするにはどうしたらよいのでしょうか?

    削除しても、また、表示されてしまうので嫌なので、

    どのようにしたら良いかおしえていただけませんでしょうか?

    何卒よろしくお願いいたします。

     

    [OS]WindowsXp

    VisualBasic2008ExpressEdition

     

    2008年3月13日 1:56

回答

  • デザイナでDataGridViewのデータソースを選択した際に、自動的にデータソースに応じた列(DataGridViewColumn)が生成されるのはデザイナの仕様であり、生成されないようにすることは無理だと思います。

    この仕様のため、自動的にAutoGenerateColumns = falseとなるのも理にかなっています。

     

    通常は同じデータソースを選択し直すことはほとんど無いと思いますので、以上の仕様で特に問題がないように思えます。

    rinko1982さんは同じデータソースを何度も選択し直されているのでしょうか?

     

    なお、AutoGenerateColumns = trueとするのは、デザイナでデータソースを割り当てず、コードで動的にデータソースを割り当てた場合、とりあえずデータを表示してほしいからデータソースの列に応じて、DataGridViewの列(DataGridViewColumn)をDataGridViewを表示する時だけ動的にちょこっと作ってちょうだい、お願い。といったケースなどで使います。

    この際、DataGridViewに列(DataGridViewColumn)が既にあろうがなかろうが関係ありません。とにかく、データソースからDataGridViewの列(DataGridViewColumn)が自動的かつ動的に作成されてDataGridViewに追加されます。

     

    2008年3月13日 2:32
    モデレータ

すべての返信

  • デザイナでDataGridViewのデータソースを選択した際に、自動的にデータソースに応じた列(DataGridViewColumn)が生成されるのはデザイナの仕様であり、生成されないようにすることは無理だと思います。

    この仕様のため、自動的にAutoGenerateColumns = falseとなるのも理にかなっています。

     

    通常は同じデータソースを選択し直すことはほとんど無いと思いますので、以上の仕様で特に問題がないように思えます。

    rinko1982さんは同じデータソースを何度も選択し直されているのでしょうか?

     

    なお、AutoGenerateColumns = trueとするのは、デザイナでデータソースを割り当てず、コードで動的にデータソースを割り当てた場合、とりあえずデータを表示してほしいからデータソースの列に応じて、DataGridViewの列(DataGridViewColumn)をDataGridViewを表示する時だけ動的にちょこっと作ってちょうだい、お願い。といったケースなどで使います。

    この際、DataGridViewに列(DataGridViewColumn)が既にあろうがなかろうが関係ありません。とにかく、データソースからDataGridViewの列(DataGridViewColumn)が自動的かつ動的に作成されてDataGridViewに追加されます。

     

    2008年3月13日 2:32
    モデレータ
  •  

    trapemiya

     

    早速のご返信ありがとうございます。

     

    「デザイナでDataGridViewのデータソースを選択した際に、自動的にデータソースに応じた列(DataGridViewColumn)が生成されるのはデザイナの仕様」ということですね。

     

    開発中のDataGridViewに追加される列については必要ないものは表示されないのが望ましいのですが、仕様ということでしたらしかたありませんね。

    実行時には非表示となり特に問題ありませんので我慢したいと思います。

     

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

    2008年3月13日 2:52