0

リストビューを使用して C# プログラムを作成しています。PC とネットブックでは列のサイズは完璧ですが、友人のコンピューターでプログラムを実行すると、列のサイズが小さく見えます。たとえば、私の私の PC では "Hello Stackoverflow" と表示され、友人の PC では "Hello Stac..." と表示されます。列のサイズはコードで設定されており、サイズを変更していません...これはどのように可能でしょうか? 私たちは同じ画面解像度 (1080p) を使用しています。彼が解像度を何か大きなもの (800x600) に変更しても、列のテキストは切り取られたままです。ウィンドウ全体が大きくなっているだけです... Windowsがこのすべての問題を引き起こしていますか?? 皆さん、ありがとうございました!!

4

2 に答える 2

5

ListViewメソッドをオーバーライドしないScaleControlため、DPI の変更に応じて適切にスケーリングされません。代わりに、フォームで行うことができます。この方法では、DPI 設定を知っている必要はありません。MSDN フォーラムからコピーされたコード。

private void ScaleListViewColumns(ListView listview, SizeF factor)
{
    foreach (ColumnHeader column in listview.Columns)
    {
        column.Width = (int)Math.Round(column.Width * factor.Width);
    }
}

protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
    base.ScaleControl(factor, specified);
    ScaleListViewColumns(listView1, factor);
}
于 2016-05-02T02:13:40.207 に答える
4

これは、DPI 設定の問題である可能性があります。あなたの友人は「大きなフォント」を有効にしている可能性があります。固定列幅を設定する場合、DPI 設定を考慮する必要があります。100 ピクセルは常に 100 ピクセルですが、DPI 設定を変更すると、8pt のフォントが友人のマシンよりも大きくなります。

これは簡単に計算できます。

int columnWidth = Desired Width / 96.0 * DPI;

Desired Width、列を広くしたいピクセル数でDPIあり、現在のマシンの水平 DPI です。

于 2012-05-29T07:59:16.453 に答える