tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルユーサーコントロールの作り方
記事No5435
投稿日: 2007/05/04(Fri) 15:47
投稿者なゆた
WinXp + vb2005

ユーザーコントロールを作りたいのですが
イベントや、プロパティなどの作り方がわかりません。
vb6.0では簡単にできたのですが…

参考になる書籍、サイトを教えてください。

[ツリー表示へ]
タイトルRe: ユーサーコントロールの作り方
記事No5436
投稿日: 2007/05/04(Fri) 17:27
投稿者魔界の仮面弁士
> イベントや、プロパティなどの作り方がわかりません。
> vb6.0では簡単にできたのですが…
イベントの作り方は、VB6 の頃と何も変わらないと思いますよ。
Event 宣言でイベントを定義して、RaiseEvent で発生させるだけです。

プロパティに関しては、Property プロシージャの構文が変化したのと、
ProperyBag を使わなくなったので、初期化の手順が変化している点に
注意が必要かも知れませんが、考え方は概ね同じです。

あとは、特定の条件下において、属性の指定が必要になる場合があるという点が
VB6 との大きな変更点でしょうか。


VB6 での実装経験があるのなら、まったく分からない、というほどでは無いと
思いますので、具体的にどのようなコードを書いて、どのような問題が
起きているのかを示した方が、解決が早いかと思います。


> 参考になる書籍、サイトを教えてください。
ヘルプのチュートリアルでは駄目ですか?
http://msdn2.microsoft.com/ja-jp/library/w29y3h59(VS.80).aspx

プロパティグリッドへの拡張方法などもしっかり解説されていますので、
MSDN に書かれているサンプルは、一通り試して見る事をオススメします。

[ツリー表示へ]
タイトルRe^2: ユーサーコントロールの作り方
記事No5439
投稿日: 2007/05/04(Fri) 19:25
投稿者なゆた
縦長のフォントを表示するコントロールを作りたいのですが、
魔界の仮面弁士様のおかげで、プロパティについては何とか理解しました。
しかし、イベントが発生してくれません。
form側で認識してくれないようです。
アドバイスお願いします。


Public Class UserControl1

    Private usrText As String

    Private Event TextChange()

    Shadows Property Text() As String
        Get
            Return usrText
        End Get

        Set(ByVal Value As String)
            usrText = Value
            Call u_Paint()
            RaiseEvent TextChange()
        End Set
    End Property



    Private Sub UserControl1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Call u_Paint()
    End Sub


    Private Sub u_Paint()
        Dim g As Graphics

        With Me
            'Graphics オブジェクトを作成
            g = .CreateGraphics
            '(アンチエイリアス処理されたグリフ ビットマップを使用)
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias

            '横・縦の表示比率を設定
            g.ScaleTransform(1.0, 3.0)

            g.DrawString(text, .Font, Brushes.Black, 0, 0)
        End With

        'リソースを解放します
        g.Dispose()
    End Sub
End Class

[ツリー表示へ]
タイトルRe^3: ユーサーコントロールの作り方
記事No5441
投稿日: 2007/05/05(Sat) 16:57
投稿者なゆた
修正です。
Private Event TextChange() −>  Public Event TextChange()

u_Paint()で「'System.StackOverflowException' のハンドルされていない例外が System.Drawing.dll で発生しました。」と出ます。

もう少しがんばってみます。

[ツリー表示へ]
タイトルRe^4: ユーサーコントロールの作り方
記事No5442
投稿日: 2007/05/05(Sat) 17:13
投稿者なゆた
form側の間違いでした。
何とかユーザーコントロールつくれそうです。
魔界の仮面弁士様、ありがとうございました。
解決です。

[ツリー表示へ]