VisualStudio2008にて、DataGridViewを表示。
1行目が表示されている時、ユーザーにて列幅が変更できない状態になっています。
(何故か、スクロールして1行目が表示されていないと列幅変更できます)
FormのShownやDataGridViewのプロパティに、
以下を設定してみましたが状況変わりません。
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
AllowUserToResizeColumns = True
どうすれば列幅変更できるようになるか心あたりあればお教え頂けますと幸いです。
このDataGridViewで何か特別なことはしていないでしょうか?例えばAutoSizeColumnsModeには何か設定されていますか?グリッドに表示されるデータはデータソースのバインドでしょうか、バインドなしで行データ追加(Rows.ADD)でしょうか?1行目のデータは2行目以降と異なるてんはありますか?
特別なことかどうかはわかりませんが、Frozenで列や行を固定したり、セルの境界線を消したり、色々操作してはいます。また、データはデータソースのバインドです。
「セルの境界線を消したり」というのは、結合セルのような表示を行うためでしょうか?セル境界を消しているのは上下側ですか、左右側ですか?1行目のデータと2行目以降のデータで異なる点はありますか?
おっしゃるとおり、結合セルのような表示にするためです。操作は上下の境界線に対して行っています。1つ上の行と内容を比較して境界線の設定をしているので1行目に対しては処理しないようにしています(1つ前の行が無いので比較できないため)。
行っていることを少しづつ削っていき、どの処理か特定されてはどうでしょう?その部分を特定しても、根本原因がわからなければ、そのソースを提示すれば、回答が得られると思います。
セルの境界線を消すのは、DataGridViewのCellPaintingイベントで行っていると思いますが、例えばこれをコメントアウトするとどうでしょうか?あと、DataGridViewでバインドを使用すると、AutoSizeColumnsModeにAllCellsを設定すると列幅変更に支障がでるという報告がありました。http://www.crossdrive.net/wp/archives/145(古い情報なので、VS2008にも関係あるかも知れません。)
有難うございます。CellPaintingは影響していませんでしたが、その流れでCellFormattingを調べたら、1行目のみ列幅指定している部分がありそれが影響しているようでした。CellFormatting内ではなく、バインドしたタイミングで列幅指定するようにしたら改善されました。何度もお付き合いいただき有難うございました。大変助かりました。
どうやったら、解決済みにできるのでしょう・・?また、回答いただいた方にポイントみたいなのをお送りしたりは出来ないのでしょうか。
kenshirouさんに回答してもらって解決済みとするか、自己解決とするかでしょうね
ご意見有難うございます。このシステム初めてでいまいち分かっていません。少し確認してみます。有難うございました。
解決されたようで嬉しいです。それでは、自己解決(自分で解決方法を投稿)として、どのように解決したかを回答欄に投稿頂けると幸いです。今後同様の問題にぶつかった人の助けとなるでしょう。
回答1件
あなたの回答
tips
プレビュー