DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WindowsFormからコントロールが消える

環境/言語:[WindowsXP C# VS2005]
分類:[.NET]

単純なことかもしれませんが、教えてください。

C#でプログラムを書いています。
Windows Form上にいくつかのコントロール(チェックボックスとコンボボックス、ボタン)を配置した画面を作っておりましたが、画面上からコントロールが消えていました。
designer.csをみると、記述が残っています。
コードにも残っています。が、Formのデザインからのみ消えています。

開きなおしたりリビルドしたりしてみましたが元に戻りません。
数日にわたって作業をし、途中で該当のFormも開いて見ていますので保存していなかったということはありません。

このような状態になった場合、再度作り直すしかないでしょうか?
配置していたコントロールの数が多かったため、なにか復旧できる手立てがあればと思い質問させていただきました。
お世話になっております

designer.csに記述が残っているのであれば
Locationプロパティを書き換えてみてはいかがでしょうか?
あるいはBringToFrontメソッドで最前面に呼び出して位置を知るとか。
■No20750に返信(ゆうさんの記事)
> designer.csをみると、記述が残っています。

"記述が残っています" だけですとやや曖昧ですね。
宣言だけなのか、Form もしくは Container に追加するところも含めて残っているのかで対応が変わります。
ありがとうございます。

Locationプロパティを書きかえてみましたが状況は変わらずでした。

■No20751に返信(しろさんの記事)
> お世話になっております
>
> designer.csに記述が残っているのであれば
> Locationプロパティを書き換えてみてはいかがでしょうか?
> あるいはBringToFrontメソッドで最前面に呼び出して位置を知るとか。
ありがとうございます。
以下の形で各コントロール(Label,CheckBox,TextBox,Button)がそれぞれdesigners.csに残っています。


this.title = new System.Windows.Forms.Label();

//
// title
//
this.title.AutoSize = true;
this.title.Font = new System.Drawing.Font("MS UI Gothic", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.title.Location = new System.Drawing.Point(25, 30);
this.title.Name = "title";
this.title.Size = new System.Drawing.Size(157, 15);
this.title.TabIndex = 2;
this.title.Text = "ソート条件を設定します。";

ですので、Formに追加する所まで残っています。
対応策のご享受よろしくお願いします。


■No20755に返信(じゃんぬねっとさんの記事)
> ■No20750に返信(ゆうさんの記事)
>>designer.csをみると、記述が残っています。
>
> "記述が残っています" だけですとやや曖昧ですね。
> 宣言だけなのか、Form もしくは Container に追加するところも含めて残っているのかで対応が変わります。
■No20779に返信(ゆうさんの記事)
> ですので、Formに追加する所まで残っています。
> 対応策のご享受よろしくお願いします。

コンテナに対して Add している記述が見当たりませんね。
本当にこれだけだったら表示されない (Form に追加されない) のは然りだと思います。
>ゆう様
念の為、確認しておきたいのですが
designers.cs内のFormを記述している部分に

this.Controls.Add(this.title);

と言った記述は存在してますでしょうか?
Labelに対しての記述だけを抜き出して
貼り付けてらっしゃるようでしたので……。
> designer.csをみると、記述が残っています。
> コードにも残っています。が、Formのデザインからのみ消えています。

私も(多分)同じ現象になることがあります
designer.csの記述も全て残っているし
実行するとちゃんと表示されます

ただ、デザイン画面でのみ表示されません

プロパティの上部にある
コントロール一覧のコンボボックス内にはあります
コンボボックスで選択すると、選択の枠だけ出てきて
移動・変形、プロパティの編集はできます

「最前面へ移動」しても変化無しです

最初は普通に表示されていて、何らかのタイミングで後ろに行ってしまいます
コードに変化は無いのでデザイン画面のバグじないかと思っています

再現性は低いのですが
TabControlの2ページ目以降に貼り付けたDataGridViewなどが
よく隠れるような気がします

残念ながら直す方法はわかりません
一旦表示されなくなっても、翌日にはちゃんと表示されたりするので
VisualStudioの再起動、Windowsの再起動で直るかもしれないという程度です
教えていただきありがとうございます。

this.Controls.Add(this.title);

この記述がありませんでした。
これまでdesigner.csを直接編集したことはありませんので何のタイミングで消えたのかはわかりませんが、出ない原因は分かったのですべてのコントロールに対し上記と同様のコードを追加し、表示されるようになりました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板