- PR -

DataGridの特定セルのみReadOnlyにする方法について(Windowアプリケーション)

1
投稿者投稿内容
whitecloud
会議室デビュー日: 2003/07/07
投稿数: 5
お住まい・勤務地: 東京
投稿日時: 2003-11-11 20:50
こんにちわ。

DataGridを用いて、あるセルのみ書き換え不可にしたいのですが、
そのような事は可能でしょうか?
また可能であればどのようにすればよいのでしょうか?

ネットで調べるなどもしてみましたが、DataGridに関しては
Web利用についての記事の方が多く、参考になるようなものが
見当たらずに苦労をしています。
よろしくお願いいたします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-11-11 23:24
こんにちわ。諸農です。

引用:

DataGridを用いて、あるセルのみ書き換え不可にしたいのですが、
そのような事は可能でしょうか?
また可能であればどのようにすればよいのでしょうか?



DataGridColumnStyleもしくはDataGridTextBoxColumnから
派生させたクラスを作成して、そのクラスのEditメソッドで
readonlyパラメータを操作してみてはいかがでしょうか。

ただ、アクティブなセルは編集可能な状態に見えるので、
もう少し工夫が必要かもしれません。。

ではでは(^^)/
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
whitecloud
会議室デビュー日: 2003/07/07
投稿数: 5
お住まい・勤務地: 東京
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)