• 締切済み

VB2005 DataGridviewのチェックボックス制御について

DataGridviewのチェックボックス列の個々のチェックボックスについて、 Enabledプロパティのような値を設定して、 使用可/不可を制御したいのですが、方法がわかりません。 教えていただけないでしょうか? 最初、DataGridViewCheckBoxCellのVisibleプロパティが 参照/設定できるとヘルプに書いてあったので、 ひとまずこれで代用しようと思ったのですが、 コードを打ち込んだら「参照のみ」といわれ、 仕方なく今はReadOnlyプロパティを使っています。 よろしくお願いいたします。

みんなの回答

回答No.1

ある列を見えなくしたいなら、 DataGridView1.Columns(1).Visible = False でできるみたいですよ。 見えるけど変更できなくしたければ、 DataGridView1.Columns(1).ReadOnly = True で、変更不可になるみたいです。 各行で変更できなくしたければ、 Private Sub DataGridView1_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter Select Case e.RowIndex Case 1, 3, 5 DataGridView1.Columns(1).ReadOnly = True Case Else DataGridView1.Columns(1).ReadOnly = False End Select End Sub とか、 DataGridView1(1, 1).ReadOnly = True DataGridView1(1, 3).ReadOnly = True DataGridView1(1, 5).ReadOnly = True でも指定できるみたいです。

sugar_donut
質問者

お礼

レスありがとうございました。お返事がおくれてすみません。 やはり「ReadOnlyしかない」というご意見でしょうか? 現在ReadOnlyでしか機能を実現できないのでやむなく使っていますが、 これはできたら使いたくない、 単独のチェックボックスのようにEnabledプロパティなどを使って グリッド上のチェックボックスそれぞれを淡色表示にしたいのです。 (そもそも、それができるのかどうかもわかりませんが。)

関連するQ&A

  • VB2005 DataGridView内のチェックボックス

    DataGridView内に生成したチェックボックスのどれか一つでもチェックされると、あらかじめ作っておいたボタンのEnabledをTrueにする。 というプログラムを制作しようとしているのですが、チェックボックスをチェックしたときのイベントの取得方法がわからず、困っています。 どういったプログラムを書けば、イベントを取得できるのでしょうか。 どうかご教授ください。 【制作環境】  ・Windows XP Professional  ・Microsoft VisualStudio2005  ・Microsoft .Net Framework 3.0

  • DataGridViewで再表示すると変更不可にならない

    Visual Basic 2008 にて開発していますがDataGridViewについて質問させて下さい。 DataGridViewのデータ表示は、検索結果をDataTableに格納し、 そのDataTableをDataSourceに設定する方法で行っています。 DataGridView内にはチェックボックスがあり、 そのチェックボックスは条件によってReadOnly = Trueにて変更不可にして表示しています。 最初の表示は問題なく条件に合えば ReadOnly = Trueにて変更不可になり表示してくれますが、 再表示(DataTableをDataSourceに再代入)すると条件に合っているのにReadOnly = Trueが効かず、 チェックボックスが変更可能となって表示してしまいます。 ReadOnly=True にする方法は、DataGridView の件数を取得し、 jjCnt = 0 Do Until jjCnt >= ggCnt   If DataGridView1.Rows(jjCnt).Cells(88).Value.ToString() = "1" Then DataGridView1.Rows(jjCnt).Cells(0).ReadOnly = True End If jjCnt = jjCnt + 1 Loop で行っています。 何故、再表示だと変更不可にならないのか解らずご教授願いたく宜しくお願い致します。

  • DataGridViewのチェックボックス

    現在DataGridViewのチェックボックスの状態で難儀しております。 DataGridViewのチェックボックス操作に、 CurrentCellDirtyStateChangedで未コミット分の判定を行い、 コミットしてからCellValueChangedで値をとる一般的な手法を用いております。 チェックボックスを単純にTrue/Falseして入力制御したりする分にはこれで問題ないです。 しかしながら、Falseした際に、他の入力セルが変更されていた場合に、 「変更内容が消えるがよろしいか?」といった内容のダイアログを出し、 場合によってはチェックボックスの値を元に戻すということを実現したいと思います。 そこでダイアログで「いいえ」を選択された場合に、 チェックボックスのValueをTrueに戻し、 発生したイベントは別に持たせたフラグでスルーするようにしましたが、 Valueは確かにTrueなのですが、表示上がFalseのままであり、 タブ移動して初めて表示上が変わる状態になってしまっています。 そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、 方法が思い浮かばず途方に暮れています。 どなたか知恵をお貸しください。

  • VB2005EE:DataGridViewでチェックボックスを設けるには

    はじめまして DataGridView(VB2005EE)でチェックボックスを設ける方法を教えていただきたく質問させていただきました。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '3つの列を設定し,ABCという列名をつける DataGridView1.ColumnCount = 5 DataGridView1.Columns(0).HeaderText = "A" DataGridView1.Columns(1).HeaderText = "B" DataGridView1.Columns(2).HeaderText = "C" Dim myNewCell As New DataGridViewCheckBoxCell DataGridView1.Columns.Insert(3, New DataGridViewColumn(myNewCell)) DataGridView1.Columns.Item(3).HeaderText = "チェックボックス" DataGridView1.Columns.Item(3).Name = "識別名" DataGridView1.RowCount = 4 '最下行に管理用の行設置 End Sub End Class 手元の本を参考に上記のコードでコンパイルを行うと, >DataGridViewで釣りの例外が発生しました: >System.FormatException:セルのフォーマットされた値に間違った型が>指定されています。 >この既定のダイアログを置き換えるには,DataErrorイベントをハンド>ルしてください。 というエラーダイアログが発生します。 まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • DataGridViewのチェックボックスのON、OFFの判定方法

    お世話になります。ご協力お願いします。 環境:VS2008 .Net FrameWork3.5 言語:C# 質問内容:ボタンを押下したら、DataGridViewの列に設定したチェックボックスのON,OFFを判定して処理を行いたい。 現状以下の方法で実現は出来ていますが、とても回りくどい方法になっています。 正しい処理を教えて頂けないでしょうか。 1.DataGridViewにて、列にチェックボックスを設けている。 2.truevaluesプロパティにtrueをセットしている。 ボタンを押下したらチェックボックスのON、OFFを判定する為に、DataGridViewの行を ループさせて判定させています。 for(int i=0;i < DataGridView.Count;i++){ ___if((string)DataGridView.Rows[i].Columns[0].values == "true") ___{ ______処理 ___} } お願い致します。

  • DataGridView上のチェックボックスが、TrueかFalseか

    DataGridView上のチェックボックスが、TrueかFalseか判定する際にエラーが出て困っています。 DataGridViewにチェックボックスのカラムを設定し、そのチェックボックスがTrueがFalseかを判断したいと思っています。 以下のコードではエラーになるのですが、何が原因でしょうか。 前提条件 ・環境:VS.NET(VB) ・DataGridView名:dgv ・チェックボックスのカラム名:cCheck For Each dgr As DataGridViewRow In dgv.Rows If CType(dgr.Cells("cCheck").Value, Boolean) Then '処理 End If Next デバッグをしていると、 上記の「 If CType(dgr.Cells("cCheck").Value, Boolean) Then」 でエラーが発生します。 エラー内容は「string型からBoolean型への変換は無効です。」です。 お分かりの方がおりましたら、ご回答頂ければ幸いでございます。 よろしくお願い致します。

  • チェックボックスの色について

    悩んでいます。 チェックボックスの□のところだけを灰色(Enabled=Flaseにした色)にしたいのですが、 プロパティは全体の色を変えるものしかないですよね? EnabledをFalseにしてしまうと、文字まで灰色になってしまうので、どうにか文字を黒のままにしたいです。 何か良い方法はありませんか?

  • C# DataGridView内での制御について

    初めて投稿します。 C#のwindowsアプリを開発しています。 開発ツールはVS2010を使用しています。 datagridview内の制御について困っているので 知恵を貸してください。 datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。 また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを おこなっています。 Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、 CellValidatingイベントが発生します。 矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに したいのですが、どうすればよいのでしょうか? 知っている方がいれば、知恵を貸してください。

  • チェックボックスの選択状況からエラーチェック

    メールフォームを作成しているのですが、 フォーム内に17つのチェックボックスが存在しています。 個々のチェックボックスはそれぞれ違う変数名を持っています。 そこで質問なのですが、 17つあるチェックボックスのうち、1つ以上選択されていたらOKで、何も選択されていない場合のみエラーになるようにしたいのですが、どのような制御文にしてよいのかわかりません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • DataGridView の sort

    DataGridView の sort メソッドなどで特定の列のソートを指定していると時、セルの内容を編集するたびに勝手にソートが起こってしまいます。これを止める方法はありますか? できそうで出来ないのです。 つまり、どの列にもソートが設定されていない最初の状態にしたいのです。SortedColumnプロパティは、ReadOnlyで設定できず、sort メソッドの引数にNothingを入れることもできません。。。 いったいどうしたら解除できるのですか??? お願いします!!

専門家に質問してみよう