■No35159に返信(ま〜さんの記事)
> TextBox.Font などを文字変数にしたい。どのFontが使われているのか知りたい
どのような文字列が返ってくればゴールですか?
たとえば、フォームに TextBox と Button を貼り付けて
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim s As String = TextBox1.Font.ToString()
MessageBox.Show(s)
End Sub
End Class
のようにコードを書くと、変数 s には
[Font: Name=MS UI Gothic, Size=9, Units=3, GdiCharSet=128, GdiVerticalFont=False]
という文字列が入ります。
この時点で、親コントロールである Form の Font を "MS 明朝, 15pt" に変更すると、変更されていた TextBox1 の値は "MS UI Gothic, 9pt" のままで TextBox2 の方は、Form 側の Font 設定と同じ状態になります。
Form の Font を "MS UI Gothic, 9pt" に戻せば、TextBox1 と TextBox2 の Font は、 共に "MS UI Gothic, 9pt" に戻りますが、この時点で、2 つの TextBox の Font プロパティは 「同じ状態に見えるが、実は異なっている」ことになりますよね。
…ということで、上記も踏まえて記述するならばこんな感じ。
'PropertyDescriptor を使って、Font プロパティの値を永続化する必要があるかどうかを調べます。 Dim pdFont = TypeDescriptor.GetProperties(TextBox1).Find("Font", False) If pdFont.ShouldSerializeValue(TextBox1) Then Label1.Text = "Font が設定済みなので永続化が必要" Else Label1.Text = "Font は未設定なので永続化は不要" End If