- PR -

実行時にデザイン画面での設定が実行時にクリアされてしまう

1
投稿者投稿内容
cobalt
会議室デビュー日: 2005/05/02
投稿数: 14
投稿日時: 2005-06-21 17:03
 再現性が今一無いので抽象的な質問になってしまいますが、VisualStudio2003でWindowsアプリを作成の際、デザイン画面でコントロールを配置した後にコンパイルして実行をすると、実行した瞬間に特定のコントロールのLocateとSizeが(0,0)になったり特定のプロパティが強制的にある値に変更されたりする事があるのですが、原因分かる方いませんか?
 新規画面で起きる事は殆ど無く、デザインを何度も変更してるとある時急になるので、デザイン時に無意識になんらかの行動をやったから起きる現象だとは思うのですが。

 具体例が揚げ辛いので非常に分かり辛い質問になってると思いますが、分かる方がいましたらお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-21 17:39
こんにちは、じゃんぬ です。

引用:

デザイン画面でコントロールを配置した後にコンパイルして実行をすると、
実行した瞬間に特定のコントロールのLocateとSizeが(0,0)になったり
特定のプロパティが強制的にある値に変更されたりする事があるのですが、
原因分かる方いませんか?


そのフォームは System.Windows.Forms.Form 以外のフォームから継承されたフォームですか?
特定のコントロールの種類はなんでしょうか?
Panel や GroupBox などのコンテナを使っていませんか?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
cobalt
会議室デビュー日: 2005/05/02
投稿数: 14
投稿日時: 2005-06-21 18:06
返信ありがとうございます。

 過去二回ほど経験ありますが、どちらもSystem.Windows.Forms.Formを継承した独自フレームワークのFormです。
 コントロールは今はGrapeCityのFlexGrid for .NETですが、以前はSystem.Windows.Forms.TextBoxで出たはずです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-06-21 18:11
こんにちは、じゃんぬ です。

引用:

どちらもSystem.Windows.Forms.Formを継承した独自フレームワークのFormです。


つまり、System.Windows.Forms.Form を継承した独自のフォームを、
"さらに" 継承したフォームで起きているのですね。
だとすると、フォームの実装に問題があるのだと思います。
ちなみに、Form 内にある子コントロールまで継承していませんよね?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
cobalt
会議室デビュー日: 2005/05/02
投稿数: 14
投稿日時: 2005-06-21 18:56
こんにちは。cobaltです。

引用:
つまり、System.Windows.Forms.Form を継承した独自のフォームを、
"さらに" 継承したフォームで起きているのですね。
だとすると、フォームの実装に問題があるのだと思います。


そうなりますが、今該当のコントロールを新規に作ったSystem.Windows.Forms.Formのフォームの上にコピペして実行してみた所同じ事が起きました。

引用:
ちなみに、Form 内にある子コントロールまで継承していませんよね?


FlexGridは継承したのを貼り付けていますが、テキストボックスはそのまま使っていました。



 今該当画面を改めて見てみたのですが、Form上にFlexGridが二つ貼ってあって、コンパイルすると「メンバ'Styles'の宣言が重複しています。」と言う警告がが出てコンパイルが終了します(FlexGridにはStylesというプロパティがあります)。
 で、コンパイルが終わった直後に該当コントロールの内容が元に戻っているようです。コンパイルが終わった直後にVisualStudioのファイル名タブの横に*がついてソースが変更されています。

 「メンバ'Styles'の宣言が重複しています。」の警告ですが、原因が分からないし警告だからとりあえず無視してたのですが、どうも二つのFlexGridのStylesプロパティの内容が同じだから警告が出てるっぽく、片方のFlexGridをForm上から消してコンパイルかけるとコンパイル後に元に戻る事が無く問題の動きがなくなりました。

 しかし、Stylesプロパティの内容をダブらせない為に片方のFlexGridのStylesプロパティをデザイナ上で変更しても、変更したStylesプロパティの内容がコンパイル後に元に戻ってしまう……。

 警告メッセージ「メンバ'〜'の宣言が重複しています。」もこの問題のキーだと思うのですがこのメッセージの詳細分かる方もいましたら返信お願いします。
cobalt
会議室デビュー日: 2005/05/02
投稿数: 14
投稿日時: 2005-06-21 19:17
自己レスです

引用:
 で、コンパイルが終わった直後に該当コントロールの内容が元に戻っているようです。コンパイルが終わった直後にVisualStudioのファイル名タブの横に*がついてソースが変更されています。


 コンパイルが終わった直後に → コンパイルが終わった後にデザイン画面を再描写させた時に

ですね。再描写の為にVisualStudioがフォームのインスタンスを作るか何かしてる時に元に戻るみたいです。
1

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