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

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

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

Re[4]: ユーザーコントロールについて


(過去ログ 55 を表示中)

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

■30876 / inTopicNo.1)  ユーザーコントロールについて
  
□投稿者/ かさは (1回)-(2009/01/08(Thu) 15:18:37)

分類:[VB.NET/VB2005 以降] 

初心者です。

VB2005を使っています。

ユーザーコントロールのアプリケーション(以下A)を「dll」化して、Aを別アプリケーション(以下B)に参照で取り込みます。

[B側の作業]
フォームデザイン画面の右下のプロパティでAの「Label1」の「Visible」をFalseにしたいのですが、Bをビルドするとそれが反映されないのはどうしてでしょうか?


引用返信 編集キー/
■30902 / inTopicNo.2)  Re[1]: ユーザーコントロールについて
□投稿者/ おてやわらか (1回)-(2009/01/08(Thu) 18:46:56)
ユーザーコントロール側に、Label1が配置してあるとして

ユーザーコントロール側で、

    '----------------------------------------------
    'ラベル
    '----------------------------------------------
    Property ClockEnable() As Boolean
        Get
            ClockEnable = Label1.Enabled
        End Get
        '
        Set(ByVal value As Boolean)
            Label1.Enabled = value
        End Set

    End Property

といったような、プロパティは用意してありますか?
用意していない場合は、作成したユーザーコントロールには、
ユーザーコントロールとしての、プロパティしかないので、
Label1単独のプロパティの変更は、出来ないことになります。
以下は、Labelに時計を表示するサンプルです。
たぶんMSのサイトの切り貼りですが、出典が残っていません。
サンプルですので、実際上は変更改造が必要になるかもしれません。
また、ベストな書き方であるとは、思っていません。
使用する側のプロパティ設定:ClockEnable=True/Falseで動作が変わります。
ユーザーコントロールのタイマーイベントも実装してあります。
lblTime:ラベル名
Timer1:タイマー名、インターバルは、1000で設定。

Public Class ctlClock
    '
    Private colFColor As Color
    Private colBColor As Color
    '----------------------------------------------
    '背景色
    ' Declares the name and type of the property.
    '----------------------------------------------
    Property ClockBackColor() As Color
        ' Retrieves the value of the private variable colBColor.
        Get
            Return colBColor
        End Get
        ' Stores the selected value in the private variable colBColor, and 
        ' updates the background color of the label control lblDisplay.
        Set(ByVal value As Color)
            colBColor = value
            lblTime.BackColor = colBColor
        End Set

    End Property
    '----------------------------------------------
    '前景色
    ' Provides a similar set of instructions for the foreground color.
    '----------------------------------------------
    Property ClockForeColor() As Color
        Get
            Return colFColor
        End Get
        Set(ByVal value As Color)
            colFColor = value
            lblTime.ForeColor = colFColor
        End Set
    End Property
    '----------------------------------------------
    'タイマインターバル
    '----------------------------------------------
    Property ClockInterval() As Long
        Get
            ClockInterval = Timer1.Interval
        End Get
        '
        Set(ByVal value As Long)
            Timer1.Interval = value
        End Set

    End Property
    '----------------------------------------------
    'タイマ
    '----------------------------------------------
    Property ClockEnable() As Boolean
        Get
            ClockEnable = Timer1.Enabled
        End Get
        '
        Set(ByVal value As Boolean)
            Timer1.Enabled = value
        End Set

    End Property
    '
    '----------------------------------------------
    'Timer Event 定義
    '----------------------------------------------
    Public Event ctlClock_Timer_tick(ByVal sender As Object, ByVal e As System.EventArgs)
    '
    Protected Overridable Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ' Causes the label to display the current time.  コメントしてある部分の動作の違いに注意。
        'lblTime.Text = Format(Now, "yyyy/MM/dd (ddd) HH:mm:ss")
        lblTime.Text = Now.ToString("yyyy年MM月dd日 (ddd) HH:mm:ss", System.Globalization.CultureInfo.CreateSpecificCulture("ja-JP"))
        'lblTime.Text = Now.ToString("(ddd) d/MMMM/yyyy hh:mm:ss", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))

        '----------------------------------------------
        'Timer Event 発生
        '----------------------------------------------
        RaiseEvent ctlClock_Timer_tick(sender, e)
    End Sub

End Class

引用返信 編集キー/
■30933 / inTopicNo.3)  Re[2]: ユーザーコントロールについて
□投稿者/ かさは (3回)-(2009/01/09(Fri) 15:48:10)
No30902 (おてやわらか さん) に返信

おてやわらかさん、ご丁寧な回答ありがとうございました。

ユーザーコントロール側にプロパティを追加したら、設定が反映されるようになりました。


引用返信 編集キー/
■30963 / inTopicNo.4)  Re[3]: ユーザーコントロールについて
□投稿者/ かさは (4回)-(2009/01/09(Fri) 18:19:50)
No30933 (かさは さん) に返信

解決済み
引用返信 編集キー/
■30972 / inTopicNo.5)  Re[4]: ユーザーコントロールについて
□投稿者/ おてやわらか (3回)-(2009/01/10(Sat) 05:10:28)
>用意していない場合は、作成したユーザーコントロールには、
>ユーザーコントロールとしての、プロパティしかないので、
>Label1単独のプロパティの変更は、出来ないことになります。
と、書きましたが、調べてみたら、
内部のコントロールを、外部から直接操作する方法があるそうです。
内部のコントロールの、
Modifiers プロパティを 
Public にすると、外部から操作できるようです。

出典
VisualBasic 2005 逆引き大全500の極意:478 ユーザーコントロールの内部にあるコントロールを直接操作する。
VisualBasic 2008 逆引き大全555の極意:508 ユーザーコントロールの内部にあるコントロールを直接操作する。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -