- PR -

ユーザーコントロールの中身をデザイン時に変更したい

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2008/10/21
投稿数: 20
投稿日時: 2009-02-17 19:55
お世話になります。
VS2008のVBアプリで、ユーザーコントロールの使い方について教えて下さい。

ラベルとボタンを貼り付けたユーザーコントロールを作成します。
ひとつのフォームに同じユーザーコントロールを複数貼り付け、各々ラベルを変更したいのですが、各々のラベルをデザイン時に変更することは可能でしょうか?
まさる
ベテラン
会議室デビュー日: 2006/12/21
投稿数: 59
お住まい・勤務地: 越後の中ほど
投稿日時: 2009-02-17 20:56
引用:

未記入さんの書き込み (2009-02-17 19:55) より:
お世話になります。
VS2008のVBアプリで、ユーザーコントロールの使い方について教えて下さい。

ラベルとボタンを貼り付けたユーザーコントロールを作成します。
ひとつのフォームに同じユーザーコントロールを複数貼り付け、各々ラベルを変更したいのですが、各々のラベルをデザイン時に変更することは可能でしょうか?




ユーザーコントロールにラベルの文字列を表すプロパティを用意し、そのプロパティが設定されたら、ラベルのTextプロパティに反映するようにすればよいかと思います。
_________________
まさるblog
未記入
常連さん
会議室デビュー日: 2008/10/21
投稿数: 20
投稿日時: 2009-02-18 11:21
引用:

まさるさんの書き込み (2009-02-17 20:56) より:
ユーザーコントロールにラベルの文字列を表すプロパティを用意し、そのプロパティが設定されたら、ラベルのTextプロパティに反映するようにすればよいかと思います。




これはデザイン時に可能なのでしょうか?
ユーザーコントロールのラベルはModifiersをPublicにして外から設定可能にしていますが、デザイン時に反映させる方法がわからず困っています。
具体的な手順を教えて頂けないでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-02-18 11:54
引用:

未記入さんの書き込み (2009-02-18 11:21) より:
引用:

まさるさんの書き込み (2009-02-17 20:56) より:
ユーザーコントロールにラベルの文字列を表すプロパティを用意し、そのプロパティが設定されたら、ラベルのTextプロパティに反映するようにすればよいかと思います。




これはデザイン時に可能なのでしょうか?
ユーザーコントロールのラベルはModifiersをPublicにして外から設定可能にしていますが、デザイン時に反映させる方法がわからず困っています。
具体的な手順を教えて頂けないでしょうか?


よく読みましょう。
ラベルをデザイナに開放する(Modifires を Public にする)のではなく、
ユーザーコントロールにプロパティを作り、セッターでラベルを変更します。
コード:
class UserControl {
    private Label label1;

    public string Text {
        set {
            label1.Text = value;
        }
    }
}
最小限のみ

Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2009-02-18 12:42
少し補足を、

デザイン時に設定を行なうためには、プロパティのゲッターも必要になりますので、
(デザイナ上でプロパティウィンドウ等に現在の設定値の表示を行なうため。)

コード:
class UserControl {
    private Label label1;

    public string Text {
        set {
            label1.Text = value;
        }
        get {
            return label1.Text;
        }
    }
}



となります。
未記入
常連さん
会議室デビュー日: 2008/10/21
投稿数: 20
投稿日時: 2009-02-18 13:53
引用:

Toshiさんの書き込み (2009-02-18 12:42) より:
少し補足を、

デザイン時に設定を行なうためには、プロパティのゲッターも必要になりますので、
(デザイナ上でプロパティウィンドウ等に現在の設定値の表示を行なうため。)

コード:
class UserControl {
    private Label label1;

    public string Text {
        set {
            label1.Text = value;
        }
        get {
            return label1.Text;
        }
    }
}



となります。



ユーザーコントロールに定義したラベルとこのクラスで定義したlabel1とプロパティの関係を教えて頂けないでしょうか?
Q1.「private Label label1;」は単にラベルの変数を定義しているだけだと思いますが、なぜセッターの中でlabel1に値を設定するだけで、ユーザーコントロールのラベルの値が書き換わるのか?、
Q2.なぜ「public string Text」という定義がユーザーコントロールのラベルと結びついているのか?

よろしくお願いします
※私はVBなのでサンプルはできればVBでお願いします。
まさる
ベテラン
会議室デビュー日: 2006/12/21
投稿数: 59
お住まい・勤務地: 越後の中ほど
投稿日時: 2009-02-18 14:39
引用:

未記入さんの書き込み (2009-02-18 13:53) より:
引用:

Toshiさんの書き込み (2009-02-18 12:42) より:
少し補足を、

デザイン時に設定を行なうためには、プロパティのゲッターも必要になりますので、
(デザイナ上でプロパティウィンドウ等に現在の設定値の表示を行なうため。)

コード:
class UserControl {
    private Label label1;

    public string Text {
        set {
            label1.Text = value;
        }
        get {
            return label1.Text;
        }
    }
}



となります。



ユーザーコントロールに定義したラベルとこのクラスで定義したlabel1とプロパティの関係を教えて頂けないでしょうか?
Q1.「private Label label1;」は単にラベルの変数を定義しているだけだと思いますが、なぜセッターの中でlabel1に値を設定するだけで、ユーザーコントロールのラベルの値が書き換わるのか?、
Q2.なぜ「public string Text」という定義がユーザーコントロールのラベルと結びついているのか?

よろしくお願いします
※私はVBなのでサンプルはできればVBでお願いします。





Jittaさんが提示されたUserControlクラス = 未記入さんがつくられたユーザーコントロール

かつ

ユーザーコントロールに定義したラベル = label1

と考えた上で、もう一度よく回答を見直して考えてみてください。

_________________
まさるblog
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2009-02-18 15:32
ユーザー・コントロールにプロパティとメソッドを追加する
http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_10/vb2005m_10_03.html

スキルアップ/キャリアアップ(JOB@IT)