投稿者 魔界の仮面弁士  (社会人) 投稿日時 2022/10/6 10:56:08
Button の Font を未設定にしておいては如何でしょうか?
既にデザイン時に設定済みの場合は、プロパティの [Font] 欄を右クリックして[リセット]を選びます。
実行時にリセットするには、「Button1.ResetFont()」などと記述します。


Font プロパティが未設定の場合、その親コントロール(Form とか Panel とか)の Font 設定が
受け継がれる仕様です。
その場合、親コントロールの Font を変更するだけで、
その上にあるコントロールの Font も連鎖的に変更されます。

つまり、「Me.Font = 新しいフォント」と書くだけで、その配下にあるコントロールのうち、
Font が未設定のコントロールのフォントを一斉に変化させることができます。

このような動作のプロパティを、アンビエント(ambient)プロパティと言います。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=30257

逆に、親コントロールの Font に連動して欲しくない時には、デザイン時などにて
連動させたくないコントロールの Font を明示的に指定しておけば OK です。


あるいはループ処理でボタンを列挙し、ひとつひとつ Font を書き換えていく手法もあります。
下記は、Panel1 の上にある Button 群の Font と、
Form1 直下にある Button 群の Font をそれぞれ設定する場合のコードです。


Dim fnt1 As Font = 新しいフォント
For Each btn In Me.Controls.OfType(Of Button)()
    btn.Font = fnt1
Next
Dim fnt2 As Font = 新しいフォント
For Each btn In Panel1.Controls.OfType(Of Button)()
    btn.Font = fnt2
Next



親コントロールが何であろうとも、フォーム上にあるすべての Button を対象にする場合は、
Controls を再帰的に列挙する方法が使えます。

Dim fnt As Font = 新しいフォント
For Each btn In GetDescendants().OfType(Of Button)()
    btn.Font = fnt
Next

上記の GetDescendants メソッドについては下記をご覧ください。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=30737