- - PR -
DataGridの特定セルのみReadOnlyにする方法について(Windowアプリケーション)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-11 20:50
こんにちわ。
DataGridを用いて、あるセルのみ書き換え不可にしたいのですが、 そのような事は可能でしょうか? また可能であればどのようにすればよいのでしょうか? ネットで調べるなどもしてみましたが、DataGridに関しては Web利用についての記事の方が多く、参考になるようなものが 見当たらずに苦労をしています。 よろしくお願いいたします。 | ||||
|
投稿日時: 2003-11-11 23:24
こんにちわ。諸農です。
DataGridColumnStyleもしくはDataGridTextBoxColumnから 派生させたクラスを作成して、そのクラスのEditメソッドで readonlyパラメータを操作してみてはいかがでしょうか。 ただ、アクティブなセルは編集可能な状態に見えるので、 もう少し工夫が必要かもしれません。。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2003-11-17 15:23
返答遅くなってしまいもうしわけありません。
意見をいただいたように派生クラスを作成することで問題の解決ができました。 まだ簡単なサンプルみたいなものができただけなので、改良のよちがありますが、 とりあえずは報告させていただきます。 また簡単なものですが、下記にソースを記述させていただきます。 protected override void Edit(CurrencyManager cm, int rowNum, Rectangle cellRect, bool readOnly, string myString, bool isVisible) { // セルごとのReadOnlyに対応 // パラメータのreadOnlyはカラムごとになるため使用しない。 // string sRowDataHandanStr=""; try { // ReadOnlyの基準となる項目の値を取得 //sRowDataHandanStr = (string)this.GetColumnValueAtRow(cm, rowNum); sRowDataHandanStr=dtTableBuf.Rows[rowNum][nHandanColPos].ToString(); } catch { sRowDataHandanStr = string.Empty; } // ReadOnlyの場合にはこの項目の更新イベントを廃棄(終了) if(sRowDataHandanStr.Equals(sHandanStr)) { this.DataGridTableStyle.DataGrid.Focus(); return; } // 通常の更新処理 base.Edit(cm, rowNum, cellRect, readOnly, myString, isVisible); } ------------------------------ 加藤 義之 |
1