none
カスタムコントロール?にカスタム属性 RRS feed

  • 質問

  •  

    ◆例えばボタンやチェックボックスコントロールなどに、

    機能を追加させるために継承したクラスを、フォームに追加します。

     

    現状は、まずフォームデザイナでボタンやチェックボックスをフォームに貼り付け、

    xxx.Designer.vbファイルを開き、そのインスタンスの宣言を、

     

    Me.chk1 = new CheckBox

    Me.chk1 = new CheckBoxCustom

     

    のように置き換えています。

     

    正しい方法とは思えないのですが、

    フォームデザイナ上からカスタムコントロールを貼り付けるような方法はありますか?

    ユーザーコントロールのDllを作成して貼り付ける程の機能追加ではないので・・・

     

    ◆いくつかのコントロールには、カスタム属性を適用させたいと考えています。

    カスタム属性が適用されたフィールドだけは、○○させたい、といった使い方です。

     

    現状は上記と同様にxxx.Designer.vbファイルを開き、

     

    Friend WithEvents btn1 As ButtonCustom

    <CustomAttribute()>Friend WithEvents btn1 As ButtonCustom

     

    のように、フィールドの宣言に書き加えています。

    これも正しい方法とは思えないのですが、何か別の方法はありますか?

     

     

    ◆最後にもう一点だけ!(ここが一番教えていただきたいところです)

    いくつかのフィールドに適用されている属性を取得するには、どんな方法がありますか?

    Reflection名前空間にそういった方法が用意されていそうですが、見つかりませんでした。。

     

    2008年6月5日 16:08

回答

  •  さくさく さんからの引用

    フォームデザイナ上からカスタムコントロールを貼り付けるような方法はありますか?

    ユーザーコントロールのDllを作成して貼り付ける程の機能追加ではないので・・・

    Windowsフォームデザイナであれば、そのアプリケーションをビルドすることでツールボックスにカスタムコントロールが登録されます。

    ビルドしても登録されない場合はオプションを変更する必要があるかもしれません。

     

    http://msdn.microsoft.com/ja-jp/library/5aazxs78.aspx (AutoToolboxPopulate)

    http://msdn.microsoft.com/ja-jp/library/fw694kde.aspx

     

    なお、オプション設定で設定項目が表示されない場合、オプション設定の画面の左下あたりにあるチェックボックスで隠蔽されている可能性があります。(このチェックのON/OFFで表示される項目数が変化します)

     

    ※Express Editionで確認したわけではありませんのでご了承下さい。

     

     さくさく さんからの引用

    ◆いくつかのコントロールには、カスタム属性を適用させたいと考えています。

    カスタム属性が適用されたフィールドだけは、○○させたい、といった使い方です。

    (略)

    これも正しい方法とは思えないのですが、何か別の方法はありますか?

    その「○○させたい」が推定できないので何とも言えません。

     

     さくさく さんからの引用

    いくつかのフィールドに適用されている属性を取得するには、どんな方法がありますか?

    Reflection名前空間にそういった方法が用意されていそうですが、見つかりませんでした。。

    このあたりが参考になりそうです。

    http://msdn.microsoft.com/ja-jp/library/a4a92379(VS.80).aspx

    2008年6月5日 22:37
    モデレータ

すべての返信

  •  さくさく さんからの引用

    フォームデザイナ上からカスタムコントロールを貼り付けるような方法はありますか?

    ユーザーコントロールのDllを作成して貼り付ける程の機能追加ではないので・・・

    Windowsフォームデザイナであれば、そのアプリケーションをビルドすることでツールボックスにカスタムコントロールが登録されます。

    ビルドしても登録されない場合はオプションを変更する必要があるかもしれません。

     

    http://msdn.microsoft.com/ja-jp/library/5aazxs78.aspx (AutoToolboxPopulate)

    http://msdn.microsoft.com/ja-jp/library/fw694kde.aspx

     

    なお、オプション設定で設定項目が表示されない場合、オプション設定の画面の左下あたりにあるチェックボックスで隠蔽されている可能性があります。(このチェックのON/OFFで表示される項目数が変化します)

     

    ※Express Editionで確認したわけではありませんのでご了承下さい。

     

     さくさく さんからの引用

    ◆いくつかのコントロールには、カスタム属性を適用させたいと考えています。

    カスタム属性が適用されたフィールドだけは、○○させたい、といった使い方です。

    (略)

    これも正しい方法とは思えないのですが、何か別の方法はありますか?

    その「○○させたい」が推定できないので何とも言えません。

     

     さくさく さんからの引用

    いくつかのフィールドに適用されている属性を取得するには、どんな方法がありますか?

    Reflection名前空間にそういった方法が用意されていそうですが、見つかりませんでした。。

    このあたりが参考になりそうです。

    http://msdn.microsoft.com/ja-jp/library/a4a92379(VS.80).aspx

    2008年6月5日 22:37
    モデレータ
  • Azuleanさん

    ご回答ありがとうございます。

    カスタムコントロールについては、教えていただいた
    AutoToolboxPopulateをオンにすることで、
    解決しました!

    「○○させたい」というのは、
    カスタム属性が適用されているフィールドは、
    そのカスタム属性が提供する条件判断メソッドから真値が得られた場合のみ、
    そのカスタム属性がもつ処理を実行させたい、といったところです。
    具体的でなくてスミマセン。

    三つ目の件ですが、提示していただいた方法は試しました。
    が、だめでした。。

    クラスの定義に適用されている属性は取得できるようですが、
    <CustomAttribute>Class ButtonCustom
    End Class
    下記のような、フィールド毎に適用されている属性を取得する事は出来ませんでした。
    <Custom1Attribute> Public WithEvents btn1 as ButtonCustom
    <Custom2Attribute> Public WithEvents btn2 as ButtonCustom

    ところで、私の開発環境はVisualStudio2005なのですが、
    投稿する場所を間違えてしまいました!

    未解決の問題については、改めてVisualStudio > VisualBasicにて質問させていただきます。

    ありがとうございました。

    2008年6月6日 1:21
  • こんにちは、森田です。

     

    さくさくさん、フォーラムのご利用ありがとうございます。

    カスタムコントロールの登録、おめでとうございます!

     

    Azuleanさん、有用な情報ありがとうございました!

    続きのスレッドURLも話の流れが見えやすくなるので、

    みなさん助かると思います。

     

    なお今回は、こちらで回答済みチェックをつけさせていただきました。

    さくさくさんは、チェックの解除もできますのでご確認くださいね。

    2008年6月12日 9:07