|
分類:[C# (Windows)]
開発環境:WinXP SP2, VS2005(C#) .NET 2.0
いつもお世話になっております、M.Kと申します。
現在カスタムコンポーネントを作成しているのですが、プロパティの DefaultValue の
設定のお陰で、プロパティの値が保存されない問題に直面しております。
もし解決方法をご存知の方がいらっしゃいましたらご教授願います。
現象の再現方法なのですが、UserControl に TextBox を貼り付け、その TextBox の
Enabled を false とします。
false にする理由は使用用途の大半が表示オンリーである為なのですが、場合によっては
入力する必要もあるので Label ではなく TextBox として Enabled を操作している次第です。
次に UserControlo 側のソースに下記の様に記述し、TextBox をプロパティシート上
から色々と操作できるようにします。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]
public TextBox text
{
get
{
return this.textBox1;
}
}
}
出来上がった UserControl1 をフォームに配置すると TextBox の Enabled は false に
なっているのですが、ここでプロパティシート上で TextBox.Enabled を true にしても
InitializeComponent の中に this.textBox1.Enabled = true; と言う記述が追加されず
更にプログラムを実行すると Enabled は false のままとなっていました。
原因を調べて見ると、 UserControl1 の InitializeComponent の中で false が設定され
るのですが、 TextBox の Enabled の DefaultValue が true になっている為、Form1 の
InitializeComponent に Enabled = true の記述が追加されず、常に false であり続ける
ようです。
この TextBox の Enabled を直接操作する別プロパティでも設ければとりあえず問題を回避
する事は可能なのですが、操作されるプロパティの数だけ別プロパティを設けるのも良案と
は言いがたいので、何か根本的な対策方法はない物でしょうか?
以上 よろしくお願いします。
|