Assert.Equal(new SizeF(1.25f, 1.25f), form.CurrentScaleFactor);
}
}
+
+ [Fact]
+ public void ScaleChildControl_ListViewTest()
+ {
+ using (var listview = new ListView { Width = 200, Height = 200 })
+ {
+ listview.Columns.AddRange(new[]
+ {
+ new ColumnHeader { Width = 60 },
+ new ColumnHeader { Width = 140 },
+ });
+
+ OTBaseForm.ScaleChildControl(listview, new SizeF(1.25f, 1.25f));
+
+ Assert.Equal(75, listview.Columns[0].Width);
+ Assert.Equal(175, listview.Columns[1].Width);
+ }
+ }
}
}
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
-
- // カラムヘッダは自動調節されないのでfactorから計算
- foreach (ColumnHeader col in this.ListViewApi.Columns)
- {
- col.Width = (int)Math.Round(col.Width * factor.Width);
- }
+ ScaleChildControl(this.ListViewApi, factor);
}
}
this.TabEventType.HandleCreated += (s, e) => NativeMethods.SetMinTabWidth((TabControl)s, 40);
}
+ protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
+ {
+ base.ScaleControl(factor, specified);
+ ScaleChildControl(this.EventList, factor);
+ }
+
private void OK_Button_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.CurrentAutoScaleDimensions.Height / baseDpi);
}
+ /// <summary>
+ /// 標準の ListView のスケーリングでは不十分な処理を補います
+ /// </summary>
+ public static void ScaleChildControl(ListView listview, SizeF factor)
+ {
+ // カラム幅
+ foreach (ColumnHeader col in listview.Columns)
+ {
+ col.Width = ScaleBy(factor.Width, col.Width);
+ }
+ }
+
public static Size ScaleBy(SizeF factor, Size size)
{
return Size.Round(new SizeF(size.Width * factor.Width, size.Height * factor.Height));
}
}
+ protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
+ {
+ base.ScaleControl(factor, specified);
+
+ var tabpages = this.ListTab.TabPages.Cast<TabPage>();
+ var listviews = tabpages.Select(x => x.Tag).Cast<ListView>();
+
+ foreach (var listview in listviews)
+ {
+ ScaleChildControl(listview, factor);
+ }
+ }
+
//private void DrawListViewItemStateIcon(DrawListViewSubItemEventArgs e, RectangleF rct)
//{
// ImageListViewItem item = (ImageListViewItem)e.Item;