DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridのReadOnly等について

環境/言語:[XP]
分類:[.NET]

お世話になっています。今回もよろしくお願いします。

今回もDataGridについてご指導を願いたいです。

DBのデータをDataGridに表示させる照会というボタンがあります。
ただの照会なのでDataGridは【Enable = False】に設定していました。

しかしレコードの量が多いと縦のスクロールバーが表示されるのですが
【Enable = False】と設定しているのでスクロールバーを動かすことが
できず、全部のレコードが閲覧できない状況になりました。

【ReadOnly = Ture】にすると上記の問題は解決されるのですが、
列の幅の自由調整ができてしまう問題が浮上しました。


・DataGridに表示されたデータは変更できないようReadOnlyにする
・列の幅を固定し、幅の自由調整ができないようにする
・スクロールバーを動かして全データを閲覧できるようにする。

この3つの処理の同時動作は不可能でしょうか?
お忙しい中申し訳ありませんがご指導宜しくお願いします。
過去ログより

DetaGlidの列幅を操作不可にしたいです。
http://dobon.net/vb/bbs/log3-12/7060.html



 以下余談になるのですが‥‥

 質問する前にサイト内の検索くらいはするようにしましょう。特に DataGrid 関連は充実していると思います。<過去ログについては解決してるとは限りませんが(^_^;)
 もし検索した上で見つからなかったのならどういったキーワードで検索したのか、見つかっても上手く適応できなかったのなら試したことと合わせて参照 URL を記載して頂ければと。

 書込み内容からkayoさんの誠意は伝わってくるのですが、前回のも今回のも見つけられないものではなかったでしょうから。
#前回のは『DataGrid クリア』、今回のは『DataGrid 列 幅』をキーワードに検索してヒットしました。

#加えていうなら最初の投稿( No8664 )も。 Tips ↓の内容で事足りていたように感じられました。<どこがポイントで解決したのか報告には含まれていなかったので。

DataGridで計算列、集約列を作成する
http://dobon.net/vb/dotnet/datagrid/columnexpression.html
>  質問する前にサイト内の検索くらいはするようにしましょう。特に DataGrid 関連は充実していると思います。<過去ログについては解決してるとは限りませんが(^_^;)

そうですね。大変申し訳ありません。
サイトのTipsしか見ていませんでした。
検索できるってことがわかりましたのでこれからはまず検索を利用します。
すみません。

> #加えていうなら最初の投稿( No8664 )も。 Tips ↓の内容で事足りていたように感じられました。<どこがポイントで解決したのか報告には含まれていなかったので。
>

どこがポイントで解決したのか報告せずすみません。
ちょっと遅くなってしまったのですが報告いたします。

大きなポイントは【DataColumnChangeEventArgs】でした。
特定の列の値を計算するという処理でしたが特定列を認識する方法が
わからず困っていました。計算に関してはTipsを参考にしながら
プログラムを組み立てることができました。
プロパティでDataSet等を設定していたので色々なやり方があるんだと
勉強になりました。


DataGridのReadOnly等についてですが参考に頂いたサイトのソースを見て
マウスのイベントを使用して
DataGridの列ヘッダーの間の境界線をドラッグした時・・!?


すみません。
正直な話、理解ができません。
大変申し訳ないのですが軽くご説明をしていただけないでしょうか?

初心者でほんと申し訳ありません。
よろしくお願い致します。
えーっと、そんなに何度もお謝りになられなくても(^_^;;;)
 キツイ物言いをしたにも関わらず真摯に受け止めて頂けたようで嬉しく思います(^^)


> ちょっと遅くなってしまったのですが報告いたします。

 私的な−しかも本筋とは全く関係のない(汗)−疑問にお答え下さりありがとうございます。
 なるほど、それでは patel さんからご提示のあった二つのサンプルのうち後者のほうが参考になったわけですね。合点がいきました。
#折角のご報告ですので勝手ながらあちらのスレッドからリンクさせて頂きますね。


> 大変申し訳ないのですが軽くご説明をしていただけないでしょうか?

 まず、このサンプルでは DataGrid クラスを継承して『列幅の変更できないデータ グリッド』を作成しているという点はよろしいでしょうか?
#もしこの辺りからよく解らないようでしたらカスタム コントロールの作成について調べてみてください。

【参考】
Windows フォーム用のコントロールの作成
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbconcontrolcreation.asp

 OnMouseDown メソッドはマウス ボタン押下操作をしたときに呼び出されます。つまりここでの処理がマウス ボタン押下時に行われることになるのです。
 データ グリッド標準の動作と同じ処理をさせたいときは、親クラス ( base / MyBase ) である DataGrid の OnMouseDown を呼び出せば良いでしょう。独自の機能を実装したいのであれば自分でその処理をコーディングすることになります。では標準の動作を無効にしたいときは‥‥?

 あまり上手な説明ではありませんが、こんな感じで雰囲気は掴めますでしょうか?
いつもお世話になっております。

ネットが使えない環境にいたため久々のレスになります。
DataGridのReadOnly等についてなのですが、仕様変更になり、
調査が進んでいません。

すみません。
調べ次第、レスいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板