C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

カスタムコントロールに関する質問

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■87857 / inTopicNo.1)  カスタムコントロールに関する質問
  
□投稿者/ www (1回)-(2018/07/08(Sun) 09:43:26)

分類:[.NET 全般] 

VB2017を使っています。

例えば、TextBoxのプロパティーのImeModeを見ると
Disable
On
Off
など決められたパラメーターしか使用できないようになっています。

自分で作ったカスタムコントロールにもこういうプロパティーを使用したいのですが
どのようにすれば良いですか?




    Structure sss
        Property afd As Integer
    End Structure



    Private _FFF As sss

    Public Property FFF() As sss
        Get
            Return Me._FFF
        End Get
        Set(value As sss)
            Me._FFF = value
        End Set
    End Property


のようにして、
宣言して使用していますが、
StructureやEnumなどを使えば良いのかと思って試してみたのですが
うまくいきませんでした。




あと、自分で作製したカスタムコントロールのプロパティが
全て「その他」に分類されてしまいますが、
「表示」の欄に表示されるようにするにはどうしたら良いですか?



引用返信 編集キー/
■87858 / inTopicNo.2)  Re[1]: カスタムコントロールに関する質問
□投稿者/ Hongliang (660回)-(2018/07/08(Sun) 10:14:47)
「うまくいきませんでした」ではなく、どうなったかを書きましょう。

そのプロパティがEnumで事足りるのであれば、Enumを使うだけで十分です。

Public Class CustomControl1
    Public Property Type As CustomType
End Public

Public Enum CustomType
    Hoge
    Fuga
    Piyo
End Enum

> あと、自分で作製したカスタムコントロールのプロパティが
> 全て「その他」に分類されてしまいますが、
> 「表示」の欄に表示されるようにするにはどうしたら良いですか?

上記コードで言う所のTypeプロパティに、
System.ComponentModel.CategoryAttribute属性でAppearanceを指定します。
https://msdn.microsoft.com/ja-jp/library/system.componentmodel.categoryattribute.aspx

引用返信 編集キー/
■87859 / inTopicNo.3)  Re[1]: カスタムコントロールに関する質問
□投稿者/ WebSurfer (1541回)-(2018/07/08(Sun) 10:22:17)
No87857 (www さん) に返信

何を作っているのでしょう? Windows Forms? WPF? ASP.NET Web Forms? ASP.NET MVC? その他?
それによって話が変わってくると思うのですが。

あと、あなたの開発環境を書けませんか? OS, .NET のバージョン、Web アプリならサーバーと
ブラウザは何かなど。それによって話が違ってくることがあります。特に .NET のバージョン。
引用返信 編集キー/
■87860 / inTopicNo.4)  Re[2]: カスタムコントロールに関する質問
□投稿者/ www (2回)-(2018/07/08(Sun) 11:04:33)
Windows Forms
Windows10
VB.NET2017
です

Enumでの方法とapperaranceの方法うまくいきました
ありがとうございます。


Enumの方法だと、整数値しかもたせることしかできないので
StructureやClassを使いたいと考えています。





Public Structure sss
    Property afd As String
End Structure


Public Class CustomControl1

    Private _FFF As sss

    Public Property FFF() As sss
        Get
            Return Me._FFF
        End Get
        Set(value As sss)
            Me._FFF = value
        End Set
    End Property


End Public

とすると、コントロールのプロパティ上に、
FFFという項目が表れます。
しかし、WindowsApplication1.sss
と表示されたままグレー色になっており、
数値を変更できないようになっています。



あと、ところで気づいたのですが

今まで、

    Private _Type As CustomType

    Public Property Type As CustomType
        Get
            Return Me._Type
        End Get
        Set(value As CustomType)
            Me._Type = value
        End Set

    End Property
というような書き方をしていたのですが

    Public Property Type As CustomType

でもうまくいくことに気がつきました。
GetやSetを明示的に書くメリットは何なのでしょうか?

引用返信 編集キー/
■87861 / inTopicNo.5)  Re[3]: カスタムコントロールに関する質問
□投稿者/ WebSurfer (1542回)-(2018/07/08(Sun) 11:38:25)
No87860 (www さん) に返信

本題の方は解決したようですが・・・

> GetやSetを明示的に書くメリットは何なのでしょうか?

開発者が意図した規則に基づいてフィールドを正しく使用できるよう保証するということだと思います。
例えば意図しない値を設定しようとした場合は例外をスローすることもできます。
引用返信 編集キー/
■87862 / inTopicNo.6)  Re[3]: カスタムコントロールに関する質問
□投稿者/ WebSurfer (1543回)-(2018/07/08(Sun) 11:54:16)
No87860 (www さん) に返信

【追伸】

ASP.NET Web Forms アプリのカスタムコントロールの場合ですが、以下の記事の例のように、
Visual Studio 上での開発中(実行時ではない)にプロパティウィンドウで値を設定してい
るときに例外をスローして設定ミスを知らせるということもできます

Web Custom Control の例外処置
http://surferonwww.info/BlogEngine/post/2010/08/06/Exception-handling-by-web-custom-control.aspx

Windows Forms アプリでも同様なことは可能だと思います。(未検証・未確認ですが)
引用返信 編集キー/
■87863 / inTopicNo.7)  Re[4]: カスタムコントロールに関する質問
□投稿者/ www (4回)-(2018/07/08(Sun) 13:43:06)
ありがとうございます。

ちなみに


Public Property Type As CustomType


のようにして明示的に書かなかった場合
デフォルト値はどのようにして記述すれば良いですか?

引用返信 編集キー/
■87864 / inTopicNo.8)  Re[5]: カスタムコントロールに関する質問
□投稿者/ www (5回)-(2018/07/08(Sun) 13:45:46)

Public Property Type As CustomType = Type.Hoge

だとうまくいかないのですが
どのようにすれば良いですか?

引用返信 編集キー/
■87865 / inTopicNo.9)  Re[6]: カスタムコントロールに関する質問
□投稿者/ www (6回)-(2018/07/08(Sun) 13:47:25)

Public Property Type As CustomType = CustomType.Hoge

でうまくいきました

引用返信 編集キー/
■87866 / inTopicNo.10)  Re[5]: カスタムコントロールに関する質問
□投稿者/ WebSurfer (1544回)-(2018/07/08(Sun) 14:57:16)
No87863 (www さん) に返信

すでに答えは調べて分かったようですので今さらながらのレスですが・・・

> デフォルト値はどのようにして記述すれば良いですか?

以下の記事が参考になると思います。

連載! とことん VB: 第 13 回 自動実装プロパティの役割と、そこから読み取れるプロパティの用途
https://code.msdn.microsoft.com/windowsdesktop/13-4ee47d39

他にも、「vb.net」「自動実装プロパティ」などをキーワードにググるといろいろヒットしますので
ご自分でもやってみてください。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ