プロが教える店舗&オフィスのセキュリティ対策術

Dim c = New System.Windows.Forms.Button()
このcからSystem.Windows.Forms.Buttonを取得する方法を教えてください。
パネル内のフォーム部品をコピーしようとして部品の列挙までは書けましたがcがボタンなのかラベルなのかを判断する方法が分からないのでnewできません。
For Each c As Control In Panel1.Controls
もしcがラベルだと分かったなら
buf = New System.Windows.Forms.Label()
Panel2.add(buf)
といった感じで部品をnewしてコピー先パネルに取り付けようとしています。

質問者からの補足コメント

  • MsgBox(c.GetType().ToString)
    上記でSystem.Windows.Forms.Buttonという文字が見えましたので

    For Each c As Control In Panel1.Controls
      buf = New c.GetType()
    このようにしましたが、書式がだめみたいでした。

    For Each c As Control In Panel1.Controls
      Dim str = c.GetType().ToString
      If str = "System.Windows.Forms.Button" Then
        buf = New System.Windows.Forms.Button()
    このようするとできるはずですが、
      buf = New c.GetType()
    これを正しく直して短いソースで書けないでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/10/24 14:23

A 回答 (1件)

VBは判りませんが….NET Frameworkってことなら……


https://msdn.microsoft.com/ja-jp/library/system. …

GetType()でしょうかね?

http://jehupc.exblog.jp/7973839/
VBだと
TypeOf <名前> Is <型>
で判定らしいので……
TypeOf c Is Button
でしょうか。
# C#だとc.GetType() == typeof(Button)
この回答への補足あり
    • good
    • 0
この回答へのお礼

GetTypeしてみます。ありがとうございます。

お礼日時:2017/10/24 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!