- - PR -
DataGridViewの入力制限
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-21 15:47
いつも参考にさせて頂いております。
DataGridViewに列を追加し、列の編集を選択した時に『MaxInputLength』というプロパティがあります。 この設定画面上では変更できるのですが、プログラムから設定するにはどのようにすればいいのでしょうか? DataGridView.Columns(0). っとやっても MaxInputLength が出てくれません。 ご教授お願い致します。 | ||||||||
|
投稿日時: 2007-02-21 16:02
MaxInputLength はどのクラスのプロパティですか?
DataGridView.Columns(0)の型は何ですか? そこに原因があります。ヘルプで調べてみて下さい。 | ||||||||
|
投稿日時: 2007-02-21 16:43
KI様 ご返答ありがとうございます。
DataGridViewのプロパティの所ににColumnsの項目があります。 (コレクション)と表示されているので、クリックをすると列の追加ができます。 その列のプロパティ上に『MaxInputLength』あります。 Columnsのプロパティで設定する為、やってみたのですが出てくれないのです。 ヘルプ等も見てみましたが、該当する所を見つけられず困っています。 記入を忘れていましたがVB2005です。 | ||||||||
|
投稿日時: 2007-02-21 17:02
何か全然前進してなくね?w[ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2007-02-21 17:06 ] | ||||||||
|
投稿日時: 2007-02-21 17:31
どうも言いたいことが上手く伝わらなかったようです。
コードから設定するのであれば、デザイナのことは関係ないので、今は忘れて下さい。 コードから設定しようと試みている箇所で、 (仮にフォーム上の DataGridView の名前を dataGridView1 としますと) dataGridView1.Columns(0) のように書いていらっしゃるのですよね? この後ろに「.」と入力すると入力候補が表示されますが、 そのときに表示されるのはあくまで「dataGridView1.Columns(0)」の型 (正確にはコンパイル時の型)のメンバです。 だからこういうケースではまず「dataGridView1.Columns(0)」がどういう型なのかを MSDNを辿って調べることです。 DataGridView の Columns プロパティ http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.columns(VS.80).aspx DataGridViewColumnCollection の Item プロパティ http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridviewcolumncollection.item(VS.80).aspx 一方で、MaxInputLength は、どのクラスのプロパティでしょうか? これもMSDNで検索してみてください。 以上を理解した上で、キャストを用いることで解決できるはずです。 | ||||||||
|
投稿日時: 2007-02-21 19:19
KI様 大変丁寧にお教え頂きありがとうございます。
「Columns」は、「DataGridViewColumnCollection」であるとの理解でよろしいのでしょうか? 「MaxInputLength」は「DataGridViewTextBoxColumn」のプロパティであることが分かりました。 しかし、私が初心者すぎて【キャスト用いる】と言う具体的な方法が分かりません。 申し訳ありませんが、どこを調べたら良いのか再度お教え頂けないでしょうか? よろしくお願い致します。 | ||||||||
|
投稿日時: 2007-02-21 20:53
その通りです。MSDNのDataGridView.Columns プロパティのページに 以下のように書いてあるはずです。
その後ろの「(0)」はプロパティ名が省略されていますので、 デフォルトのプロパティである Item を使っています。 http://msdn2.microsoft.com/ja-jp/library/6dbs9yfy(VS.80).aspx したがって、dataGridView1.Columns(0)の型は、 Itemプロパティの型ですので DataGridViewColumn です。 DataGridViewColumn はDataGridViewの列を表すクラスです。 DataGridViewTextBoxColumn クラスは DataGridViewColumn クラスのサブクラスにあたります。 デザイナで設定された DataGridView のインデックス0にあたる列が テキストボックスタイプの列になっているのであれば、 dataGridView1.Columns(0) が表す列(つまり1列目)の実体は DataGridViewTextBoxColumn です。 しかし、dataGridView1.Columns(0) だけでは DataGridViewColumn 型として認識されるため、 MaxInputLength プロパティは入力候補に表示されないのです。 こういう場合は「DataGridViewTextBoxColumn」型にキャストすることで解決できます。 キャストについては「DirectCast」「CType」「TryCast」を調べてください。 こんな感じで使います。 DirectCast(dataGridView1.Columns(0), DataGridViewTextBoxColumn).MaxInputLength = 10 | ||||||||
|
投稿日時: 2007-02-22 09:42
KI様
親切丁寧にお教え頂きありがとうございました。 こういう使い方を全く知らなかった為、すごく勉強になりました。 クラスとサブクラスの関係、調べ方についてもかなり理解できたと思います。 キャストについても、変数等色々応用が出来そうです。 本当にありがとうございました。 |
1