- PR -

自作コントロールとVS.NETのプロパティグリッドのenum型

1
投稿者投稿内容
zucci
会議室デビュー日: 2003/03/25
投稿数: 12
投稿日時: 2003-12-01 18:07
自作コントロール(TextBoxを継承)を作成したのですがenum型のプロパティだけ、
変更した値が、次回そのプロジェクトを開きなおした時にenum定義の最初の項目に
戻ってしまうのです。

ちなみにフォーム側の生成されたソースのInitializeComponent()の、自作コントロールの
箇所には正常にenum型の変更された記述があるのですがVS.NETのコントロールの
プロパティにはこの値が反映されません。

また、フォームにこのコントロールを複数貼り付けたときに全部が戻ってしまったり、
全部が正常に表示されたり、一部戻ったり、フォームによってプロジェクトを
開きなおしたときの状態がまちまちなのです。不思議です。

自作コントロールを作成するときにenum型のプロパティは特別なアトリビュート
とかが必要なのでしょうか?ちなみにbool型の項目は正常です。

ないとー
会議室デビュー日: 2002/08/29
投稿数: 9
投稿日時: 2003-12-01 18:38
InitializeComponentに変更後の記述がされているのであれば、問題ないはずです。
また、特別な属性が必要という事もないはずです。
私自身も、コントロールを作成しenumのプロパティをよく利用しますが、今回のような現象は経験がありません。 何か、別の原因があると思います。

よろしければ、ソースを公開してもらえれば、何かわかると思います。
zucci
会議室デビュー日: 2003/03/25
投稿数: 12
投稿日時: 2003-12-01 19:19
ないとー!様 zucciです。

ソース(抜粋)です。

public class IzmTextBox : System.Windows.Forms.TextBox
{
public enum enTextType { None, Number, Zenkaku, Hankaku, YYYYMMDD, ZipCode, TelNo, WebUrl, EmailAddress };

private IzmTextBox.enTextType v_TextType;

[Description("Textの入力タイプ。"),Category("ISYS拡張"),DefaultValue(IzmTextBox.enTextType.None)]
public IzmTextBox.enTextType TextType
{
get
{
return v_TextType;
}
set
{
v_TextType = value;
}
}

特に、変なことはしていないと思うんですけど.....

ちなみに、自作コントロールのコンストラクタの部分( IzmTextBox() )では、
何もしてなくInitializeComponent();の下には独自の初期化処理などを入れていません。

以上です。よろしくお願いいたします。
ないとー
会議室デビュー日: 2002/08/29
投稿数: 9
投稿日時: 2003-12-11 10:02
返信が遅くなりました。m(_ _)m
ソースをコピーして試してみましたが、全く問題ありませんでした。

TextTypeを変更すると、ちゃんとソース上に反映しますし、ソースビュー、デザイナービューを開きなおしても、プロジェクトを開きなおしても、変更後の内容が維持されました。

と、いうより、ソースを見ましたが、全く問題なく思えます。
他の部分に原因があるのでは・・・!?
zucci
会議室デビュー日: 2003/03/25
投稿数: 12
投稿日時: 2003-12-11 15:51
検証ありがとうございます。

自分も、いろいろな箇所をコメントアウトしたりして
調査しているのですが、まだ、うまくいかない状態です。

ちょっと、最初からユーザーコントロールを作り直そうと
思います。

お手数かけました。ありがとうございした。
1

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