[解決済み] DataGridViewコントロールの列のサイズを自動的に変更し、かつ、ユーザーが同じグリッドの列のサイズを変更できるようにするにはどうしたらよいですか?
質問
Windowsフォーム(WPFではなくC#2.0)上のDataGridViewコントロールにデータを入力しています。
私の目標は、セルで利用可能なすべての幅をきちんと埋めるグリッドを表示することです。つまり、右下に未使用(濃いグレー)の領域がなく、各列はそれが含むデータに従って適切にサイズ調整されます。 しかし また、ユーザーが好きなように列のサイズを変更できるようにすることです。
私はこれを実現するために、各カラムのAutoSizeModeを DataGridViewAutoSizeColumnMode.AllCellsに設定することで、これを実現しようとしています。 に設定された列の1つを除いて、私は DataGridViewAutoSizeColumnMode.Fillに設定しました。 グリッドの全領域がきちんとデータで満たされることを確実にするために。(私は、ユーザーがこの列のサイズを変更しようとすると、水平方向のスペースが常に使用されることを保証するサイズにスプリングバックすることを気にしません)。
しかし、私が言及したように、いったんロードされると、ユーザーが自分の要件に合わせて列のサイズを変更できるようにしたいと思います。各列にこれらの AutoSizeMode 値を設定すると、ユーザーはそれらの列のサイズを変更できなくなるようです。
すべての列の AutoSizeMode を設定しないようにして、サイズ変更を可能にしましたが、セルが含むデータに従って初期サイズを設定しません。データを読み込んだ後、グリッドの AutoSizeMode を "Not Set" に戻すと、同じ結果が発生します。
デフォルトの列幅の自動設定とユーザーによるサイズ変更を可能にする、私が見逃している設定はありますか、それとも DataGridView コントロールに入力するときに使用しなければならない別のテクニックがありますか。
どのように解決するのですか?
このトリックは私のために動作します。
grd.DataSource = DT;
// Set your desired AutoSize Mode:
grd.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
// Now that DataGridView has calculated it's Widths; we can now store each column Width values.
for (int i = 0; i <= grd.Columns.Count - 1; i++)
{
// Store Auto Sized Widths:
int colw = grd.Columns[i].Width;
// Remove AutoSizing:
grd.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
// Set Width to calculated AutoSize value:
grd.Columns[i].Width = colw;
}
上のコードで 列のAutoSizeプロパティを必要なAutoSizeModeに設定します。 次に、(列ごとに)各列の幅の値(AutoSizeの値から)を格納します。 AutoSizeプロパティを無効にし、最後に、列の幅を以前に格納した幅の値に設定します。
関連
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】画像のペイントにTextureBrushを使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み] 関数を終了するには?