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

Datagridで複数行選択とCTRL+C

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

初期の状態ではできたのですが
Datagridの列毎の色を変えるために
こちらの.NET Tipsの「DataGrid内の特定のセルの色を変える」を参考に
DataGridColumnStyle.Paintメソッドをオーバーライドするようにしたところ、
Datagridで複数行選択とCTRL+Cが効かなくなってしまいました。
どのようにしたらよいのでしょうか。
■No17187に返信(並山さんの記事)
> こちらの.NET Tipsの「DataGrid内の特定のセルの色を変える」を参考に
> DataGridColumnStyle.Paintメソッドをオーバーライドするようにしたところ、
> Datagridで複数行選択とCTRL+Cが効かなくなってしまいました。

DataGrid内の特定のセルの色を変えるhttp://dobon.net/vb/dotnet/datagrid/coloredcell.html

に書かれているようにするだけであれば、通常そのようになることはありません。VS2005で試しましたが、問題ありませんでした。
■No17197に返信(管理人さんの記事)
> DataGrid内の特定のセルの色を変える
>http://dobon.net/vb/dotnet/datagrid/coloredcell.html
>に書かれているようにするだけであれば、通常そのように
>なることはありません。VS2005で試しましたが、問題ありませんでした。

回答ありがとうございます。
「DataGrid内の特定のセルの色を変える」には問題ありませんでした。
私の書込みにより気分を害された方がいらしたら
この場を借りてお詫びいたします。
列スタイル追加の際に指定するクラス名を
間違っていました。
(DataGridTextBoxColumnを指定してしまった。)

これにより、複数選択とCTRL+Cによるコピーはできたのですが
行選択時に青くならないという現象が発生しております。
行選択モードにしなければならないのかと思いましたが
セルの値をコピーしたい時もあるので断念しました。
どなたかご助言いただけると助かります。
> 行選択時に青くならないという現象が発生しております。

選択状態のセルを通常とは違うように表示するのであれば、選択されている時の描画法を変える必要があります。そのことは考慮されているでしょうか?
■No17297に返信(管理人さんの記事)
> 選択状態のセルを通常とは違うように表示するのであれば、
>選択されている時の描画法を変える必要があります。
>そのことは考慮されているでしょうか?

考慮していませんでした。
VS2005では問題ないとの回答を受け、オーバーライドしても
複数行選択時には色が変わるものと思ったため
現状のソースと「DataGrid内の特定のセルの色を変える」を比較し
コードを修正するつもりでした。
新たに何か設定しないといけないのでしょうか?
■No17298に返信(並山さんの記事)
> 新たに何か設定しないといけないのでしょうか?

つまり、セルが選択されていようがいまいがPaintで描画したように表示されるということです。セルが選択されたからといって別の方法で描画されるわけではありません。よって、選択された時にセルの背景を青くしたければ、Paintメソッドでセルが選択されているかを判断し、そうであれば背景を青く描画すればよいということになります。

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