アラキタウン

黒歴史や生き恥を切り売り

.NET Framework c# フォームの大きさに合わせてフォントも大きくする。

最近C#触り始めまして、そこでちょっと詰まったところ。

tabletlayoutpanelでフォームの大きさを変えると同時にコントロールの大きさも変えれるけど、

フォントの大きさ変わらないのですよねー

f:id:alakialaca:20171015191748g:plain

 

columnSpan,rowSpanで枠が2つに増やせるのも知らなかったわー

f:id:alakialaca:20171015191326j:plain f:id:alakialaca:20171015191331j:plain

そこでフォームのリサイズイベントのところ、でサイズの比率に合わせてフォームのサイズも変える処理を行いました。

 

private void Form1_Resize(object sender, EventArgs e)
{
  listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
  //clientsizeでフォームの幅が取得できる
  float text_size = ClientSize.Width;//横幅
  float text_size2 = ClientSize.Height;//縦幅
  //大きい方に合わせる
  float text_size_max = System.Math.Max(text_size, text_size2);
  this.label1.Font = new Font("MS UI Gothic", 9 * (text_size_max / 600));
  this.button1.Font = new Font("MS UI Gothic", 9 * (text_size_max / 600));
  this.listView1.Font = new Font("MS UI Gothic", 9 * (text_size_max / 600));
  for (int i = 0; i < listView1.Items.Count; i++)
  {
    listView1.Items[i].SubItems[0].Font = new Font("MS P明朝", 9 *       text_size_max/600);
  }
}

600はただ単に一番初めに作った画面の横幅の大きさです。

適当な比率です。

f:id:alakialaca:20171015194054g:plain