DOBON.NETプログラミング道掲示板

■35164 / 3階層)  TEXTBOXのプロパティを文字列に
□投稿者/ 魔界の仮面弁士 大御所(1453回)-(2022/10/11(Tue) 19:04:19)
  • アイコンNo35163に返信(ま〜さんの記事)
    > TextBox2.BackColor = DirectCast(pdBackColor.Converter.ConvertFromInvariantString(Label14.Text), BackColor)
    > TextBox2.ForeColor = DirectCast(pdForeColor.Converter.ConvertFromInvariantString(Label15.Text), ForeColor)
    DirectCast の第二引数には「データ型」を指定します。

    BackColor プロパティは「System.Drawing.Color 型」で
    ForeColor プロパティも「System.Drawing.Color 型」で
    Font プロパティは「System.Drawing.Font 型」で
    Text プロパティは「System.String 型」で
    Enabled プロパティは「System.Boolean 型」ですよね。

    すなわち、
     TextBox1.BackColor = DirectCast(〜, Color)
     TextBox1.ForeColor = DirectCast(〜, Color)
     TextBox1.Font = DirectCast(〜, Font)
     TextBox1.Text = DirectCast(〜, String)
     TextBox1.Enabled = DirectCast(〜, Boolean)
    のように記述することになります。



    > (Label13は適当に書いてみました。これが要因?)
    Label 用の PropertyDescriptor を TextBox 用に対して用いてはいけません。

    PropertyDescriptor にとって重要なのは「どの型のプロパティを扱おうとしているのか」なので、
    コントロールの型を一致させてないと実行時エラーになりえます。


    たとえば
     Dim a = TypeDescriptor.GetProperties(Label1).Find("AutoEllipsis", False)
     Dim b = TypeDescriptor.GetProperties(TextBox1).Find("CharacterCasing", False)
    とした場合、
     MsgBox( a.GetValue(Label1) )
     MsgBox( b.GetValue(TextBox1) )
    とは書けますが、
     MsgBox( a.GetValue(TextBox1) )
     MsgBox( b.GetValue(Label1) )
    にしてしまうと、呼び出し時に例外がスローされます。
    これは ShouldSerializeValue などでも同じことです。


    PropertyDescriptor は:

    Dim pd As PropertyDescriptor = TypeDescriptor.GetProperties(Label1).Find("Font", False)
    のように「コントロールのインスタンス」を通じて取得する方法のほか、

    Dim pd As PropertyDescriptor = TypeDescriptor.GetProperties(GetType(Label)).Find("Font", False)
    のように「コントロールの型」を通じて取得する方法もあります。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: TEXTBOXのプロパティを文字列に /ま〜 →Re[4]: TEXTBOXのプロパティを文字列に /まー
 
上記関連ツリー

Nomalアイコン TEXTBOXのプロパティを文字列に / ま〜 (22/10/07(Fri) 16:49) #35159
Nomalアイコン Re[1]: TEXTBOXのプロパティを文字列に / 魔界の仮面弁士 (22/10/08(Sat) 15:23) #35161
│├Nomalアイコン Re[2]: TEXTBOXのプロパティを文字列に / まー (22/10/11(Tue) 12:53) #35162
│└Nomalアイコン Re[2]: TEXTBOXのプロパティを文字列に / ま〜 (22/10/11(Tue) 16:59) #35163
│  └Nomalアイコン TEXTBOXのプロパティを文字列に / 魔界の仮面弁士 (22/10/11(Tue) 19:04) #35164 ←Now
│    └Nomalアイコン Re[4]: TEXTBOXのプロパティを文字列に / まー (22/10/13(Thu) 11:10) #35166
Nomalアイコン Re[1]: TEXTBOXのプロパティを文字列に / KOZ (22/10/08(Sat) 14:26) #35160
  └Nomalアイコン Re[2]: TEXTBOXのプロパティを文字列に / ま〜 (22/10/18(Tue) 17:17) #35171 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -