none
DataGridView の DataGridViewCheckBoxCell について RRS feed

  • 質問

  • DataGridView で指定したセルをチェックボックスにする為に、
    DataGridView.Rows(1).Cells(1) = New DataGridViewCheckBoxCell
    と、指定するとエラーになります。けど、
    DataGridView.Rows(1).Cells(1) = New DataGridViewButtonCell
    と、指定するとエラーにならずに、セルはボタンになります。

    ボタンは作成できるんですが、チェックボックスが作成できません。
    御存じの方がいらっしゃいましたら、ご教授頂けないでしょうか。
    宜しくおねがいします。

    【環境】
    Windows XP Pro
    Microsoft Visual Basic 2005
    SP1
    .NET Framework2.0.50727 SP1

    2008年4月15日 4:17

回答

  • そのようなコードであれば、DataGridViewButtonCell の場合には、.Rows(Idx1).Cells(1).Value = 0を実行してから代入してみて下さい。

    今、エラーになっているのは、たぶんNothingがセルの値として返ってくるので、NothingはCheckBoxの型として不適切だよって叱られているんだと思います。

    2008年4月16日 6:38
    モデレータ

すべての返信

  •  

    DataGridView.Item(列Index, 行index) = New DataGridViewCheckBoxCell

    では駄目でしょうか?

    2008年4月15日 8:23
  • norisuke77 さん 返信ありがとうございます。

    DataGridView.Item(列Index, 行index) = New DataGridViewCheckBoxCell
    でも、同じエラーがでました。色々試していますが、やはりチェックボックスだけ
    エラーがでます。

    2008年4月15日 9:09
  • お役に立てずすいませんでした。

    私はこの記述でうまくいったのですが・・・

    ちなみにどういったエラーでしょうか?

    2008年4月15日 9:32
  •  norisuke77 さんからの引用

    お役に立てずすいませんでした。

    私はこの記述でうまくいったのですが・・・

    ちなみにどういったエラーでしょうか?



    norisuke77 さん 返信ありがとうございます。

    エラーの内容ですが、

    DataGridViewで、次の例外が発生しました。
    System.FormatException:セルのフォーマットされた値に間違った型が指定されています。

    と、いったエラーです。ちなみに、norisuke77 さん の開発環境は、

    Microsoft Visual Basic 2005 SP1
    .NET Framework2.0.50727 SP1

    でしょうか?
    2008年4月16日 0:13
  • 環境は同じようですが・・・

     

     

    2008年4月16日 0:53
  • norisuke77 さん 返信ありがとうございます。

    開発環境は、同じですか・・・・。やはり、ロジックに問題があるのでしょうか。
    ちなみに先程、Visual Studio 2008 が届いたのでインストールして試してみます。
    結果、ご報告いたします。

    2008年4月16日 2:25
  • ひょっとして新しい行に対して行っていませんか? その行のセルからはnothingが返されるので、それでエラーが発生しているのだと思います。DefaultNewRowValue をオーバーライドして0を返すようにすればうまくいくんじゃないかと思います。

     

    2008年4月16日 4:57
    モデレータ
  • trapemiya さん 返信ありがとうございます。

    やはり、VS2008 でも同じエラーでした。

    trapemiya さん このコードでは、まずいんでしょうか?
    ①のところが、.Rows(Idx1).Cells(1) = New DataGridViewButtonCell だと問題ないんですが。

        Private Sub Set_DataGridView()
            Dim Idx1 As Integer

            With DataGridView1
                .ColumnCount = 2
                .RowCount = 8
                For Idx1 = 1 To .RowCount - 1
                    .Rows(Idx1).Cells(1) = New DataGridViewCheckBoxCell ・・・・・・・・①
                Next
            End With

        End Sub

    2008年4月16日 5:51
  • そのようなコードであれば、DataGridViewButtonCell の場合には、.Rows(Idx1).Cells(1).Value = 0を実行してから代入してみて下さい。

    今、エラーになっているのは、たぶんNothingがセルの値として返ってくるので、NothingはCheckBoxの型として不適切だよって叱られているんだと思います。

    2008年4月16日 6:38
    モデレータ
  •  trapemiya さんからの引用

    そのようなコードであれば、DataGridViewButtonCell の場合には、.Rows(Idx1).Cells(1).Value = 0を実行してから代入してみて下さい。

    今、エラーになっているのは、たぶんNothingがセルの値として返ってくるので、NothingはCheckBoxの型として不適切だよって叱られているんだと思います。



    trapemiya さん 度々返信ありがとうございます。

        Private Sub Set_DataGridView()
            Dim Idx1 As Integer

            With DataGridView1
                .ColumnCount = 2
                .RowCount = 8
                For Idx1 = 1 To .RowCount - 1
                    .Rows(Idx1).Cells(1) = New DataGridViewCheckBoxCell
          ・・・・・・・・①
          .Rows(Idx1).Cells(1).Value = False
               Next
            End With

        End Sub

    .Rows(Idx1).Cells(1).Value = 0 を ①の前だと同じエラーでしたが、①の後だとうまくいきました。
    ちなみに、.Rows(Idx1).Cells(1).Value = False でもうまくいきました。

    trapemiya さん 、norisuke77 さん ありがとうございました。

    2008年4月16日 7:23