none
DataGridViewのカスタム列で文字の入力制限につきまして RRS feed

  • 質問

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

    現在、IMEModeや入力制限付きのDataGridViewのカスタム列をつくり、使いまわせるようにしたいと思い、

    試行錯誤しながら、作成しています。

    http://dobon.net/vb/dotnet/datagridview/maskedtextboxcolumn.html

    http://jeanne.wankuma.com/tips/vb.net/textbox/permitchars.html

    上記サイトを参考にしながら作成していて、IMEModeを持ったカスタム列の作成は出来たのですが、

    入力制限のところでつまづいています。

    (カスタムEditingControl).PermitChars = New Char() {"0"c, "1"c, "2"c, "3"c, "4"c, "5"c}

    のように数字だけの制限は上手く動作するのですが、

    これに小数点も対応したく 「"."c」(ドット)を追加したところ、ドットが入力できないのですが、原因がわからなくて困っています。

    すいませんが、お力をお貸し下さい。

    Visual Studio 2008

     

    2011年3月1日 9:44

すべての返信

  • こんばんは。

    私もご提示のサイトを参考にやってみました。(Visual Studio 2010)

    変更点は以下 2 点です。

    1. DataGridViewMaskedTextBoxEditingControl の MaskedTextBox を MyTextBox に変更
    2. maskedBox.Mask = column.Mask; をコメントアウト

    そのうえで、下記のようにしてみたところ、1 ~ 5 およびドットのみを入力できるようにできました。

        Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object,
            ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) _
            Handles DataGridView1.EditingControlShowing
    
            If TypeOf (e.Control) Is DataGridViewMaskedTextBoxEditingControl Then
                CType(e.Control, MyTextBox).PermitChars = New Char() {"0"c, "1"c, "2"c, "3"c, "4"c, "5"c, "."c}
            End If
        End Sub
    
    

    ご参考になれば幸いです。

     

    • 回答の候補に設定 Yuro 2012年5月17日 8:05
    • 回答の候補の設定解除 Yuro 2012年5月17日 8:05
    2012年1月16日 19:45