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