C# データグリッドビュー セル幅自動調整がうまくできません

[戻る]
なおぞう 2016/07/06(水) 20:12:47
よろしくお願いします。
開発環境はVisualStudio 2010 C# 
OSは Windows7です。

セル幅を自動で変更したいのですがうまくできません。

データグリッドビューで、プログラム内でユーザ処理でフォントを変えられるようにして
います。

グリッドのプロパティで、AutoSizeColumnsMode=DisplayedCellsと設定していますが、自
動調整してくれません。

9ptだと、”今日の 作業は終了しました” と見えても、18ptにすると、”今日の 作
業・・・”と省略されて表示されます。

どのような設定をすれば良いのでしょうか。
いろいろ探してみてはいるのですが、見つけることができずこちらに頼ることにしました。
よろしくお願いします。

瀬戸っぷ [E-Mail] 2016/07/08(金) 11:42:54
試したことはありませんが……

フォントを変更した時にDataGridView.AutoResizeColumns()で再設定してみてはどうで
しょうか?
DataGridView.FontChangedイベント内でコールするようにしておく…というのでもいいの
かも知れませんけど。

なおぞう 2016/07/09(土) 13:51:10
>瀬戸っぷ様

ありがとうございます。
プログラムのフォントをセットした後に、
dgv1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader;
dgv1.AutoResizeColumns();

と入れてやってみましたが、なぜかヘッダのカラム幅に設定されて余計に幅が小さくなっ
てしまいました。
・・・という省略記号をだささせない。という方法も探したのですが今のところ見つから
ないです。

以前、C++で同じ問題にぶち当たって、その時はあきらめてフォントサイズ、文字数で計
算をして自分でセルのwidthを設定して対応したのですが、C#もそうしたほうが良いのか
も知れませんね。

瀬戸っぷ [E-Mail] 2016/07/11(月) 12:08:32
AutoSizeColumnsModeは内容が変更されないと適用されないみたいですね。

http://dobon.net/vb/dotnet/datagridview/autosizecolumn.html

AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
ではダメなんですかね?
フォントサイズの変更には対応していないのかな……。

・ス・ス・スヒゑソス・ス [E-Mail] 2016/07/11(月) 17:20:21
    public partial class Form1 : Form
    {
        private Font font9pt;
        private Font font18pt;

        public Form1()
        {
            InitializeComponent();

            font9pt = new Font(dataGridView1.Font.FontFamily, 9);
            font18pt = new Font(dataGridView1.Font.FontFamily, 18);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.Rows.Add(new string[] { "今日の 作業は終了しました",
"今日の 作業は終了しました", "今日の 作業は終了しました" });
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.Font = font9pt;
           
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells);
           
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.Font = font18pt;
           
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.DisplayedCells);
           
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
        }
    }


で、よろしく切り替わっているように見えますが…どうでしょう?
# DataGridView.FontChangedイベントでは微妙に変だった。

瀬戸っぷ [E-Mail] 2016/07/11(月) 17:21:20
↑ 名前が化けた…

なおぞう 2016/07/12(火) 12:06:58
>瀬戸っぷ様
いつもありがとうございます。

おかげさまで、上記コードをいれたことによってしっかりカラムのサイズ変更ができました。
感謝いたします。

なおぞう 2016/07/12(火) 12:07:16
[[解決]]
閉じます

古いスレッドには追加発言できません。