- PR -

内部のコントロールを返すプロパティを持つユーザーコントロールについて

1
投稿者投稿内容
はるとパパ
会議室デビュー日: 2004/08/27
投稿数: 3
投稿日時: 2004-08-27 22:34
はじめまして。
はるとパパといいます。

C# VS.Net2003 でユーザーコントロールに貼り付けたコントロールを
返すプロパティを作成したのですが、できあがったユーザーコントロールを
デザイナ画面でフォームに貼り付け、プロパティウィンドウから
ユーザーコントロールのNameプロパティを変更すると、
最初のビルドがエラーになってしまいます。
2回目からは正常にビルドができるのですが、最初のビルドのエラーを
なくしたいのです。
何か良い方法があるのでしょうか?

コントロールを返すプロパティ

public class UserControl1 : System.Windows.Forms.UserControl
{
private System.Windows.Forms.ComboBox comboBox1;
〜省略〜
[
Description("ユーザコントロール内にあるコンボボックスを取得します。"),
Category("コントロール"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)
]
public ComboBox CboBox
{
get
{
return this.comboBox1;
}
}
}

ビルドエラーになるのは、フォームデザイナで作成されたコードの
this.uctControl.Controls.Add(this.userControl11.CboBox);
の部分です、"uctControl"が後から命名したコントロール名で、"userControl11"が
画面に貼り付けたときにデフォルトで命名されたコントロール名です。
最初のビルドのときはここが書き換わらないためエラーになります。
(エラー後書き換わる。)

DesignerSerializationVisibilityをDesignerSerializationVisibility.Visible
にするとエラーは起きませんが、プロパティウィンドウでの設定値が反映されないんですよ。
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-08-27 22:54
コンボボックスを丸ごと返すプロパティではなく、
コンボボックスの必要な一部のプロパティのみ外に出せばいいんでは無いでしょうか?

_________________
えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12
えムナウのプログラミングのページ Blog1 Blog2
はるとパパ
会議室デビュー日: 2004/08/27
投稿数: 3
投稿日時: 2004-08-31 10:18
えムナウさん
早速の返答、ありがとうございます。

確かに、必要なプロパティだけを外に出せばいいのですが、
今の段階で、何を外に出せばいいのかが洗い出せていないので、
コントロールを丸ごと返す方法を選択してしまいました。

もう少し考えてみます。
1

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