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

フォームのきりかえについて

環境/言語:[OS: Win XP Professional SP2 開発環境: Visual Studio 2005言語: C#]
分類:[.NET]

初めまして、Yuki と申します。

一つのプロジェクト内で複数のフォームを使用し、それぞれ任意に切り換えたい変えたい (例えば、form1、form2、form3 と有った場合、form1 には form2、form3 へ切り換える専用のボタンがあります)

form1 → form2 へ切り換える場合

form1 form1Form = new form1();
form1Form.Show();
this.Hide();

という方法がありますが、ID8118 の回答中にも有ります様に、Show あるいは Hide を使用して画面を制御したいと思います。
Form のインスタンスを作成して制御することは理解できるのですが、具体的にインスタンスをどの様に生成したらよいかお教え下さい。
あわせて、ID8153 に記述されています "メインのコンストラクタ" の意味も合わせてお教え頂きたく存じます。
回答になっていないかもしれませんが、もしそうであれば、聞き流してください。(No8118の記事も見ていません...。)

もしform1〜3が一つだけ存在するのであれば、

フォームが一つしか表示されないようにする
http://dobon.net/vb/dotnet/form/singleform.html

が使えるかもしれません。ただし、はじめに表示されるフォームに関しては、フォームのコンストラクタの最後のほうで、

_instance = this;

のようなことをしなければなりません。
■No18285に返信(管理人さんの記事)
> 回答になっていないかもしれませんが、もしそうであれば、聞き流してください。(No8118の記事も見ていません...。)
>
> もしform1〜3が一つだけ存在するのであれば、
>
> フォームが一つしか表示されないようにする
> http://dobon.net/vb/dotnet/form/singleform.html
>
> が使えるかもしれません。ただし、はじめに表示されるフォームに関しては、フォームのコンストラクタの最後のほうで、
>
> _instance = this;
>
> のようなことをしなければなりません。
管理人様、Yuki で御座います。
早速のご回答有り難う御座いました。ご呈示された第 1 案の方で解決できました。
ということで、一応の解決を見たわけですが、第 2 案の方はビルトの際にエラーが出てしまいました。
メッセージは、
名前空間'WindowsApplication1'に'Form1'の定義が既に含まれます
というものです。
components にある Form1 の定義は sealed class Form1 に、Form1() に有る定を public sealed class Form1 : Form に変えています。
恐れ入りますが、この点、お教えいただければ幸いです。
宜しくお願い致します。
> 早速のご回答有り難う御座いました。ご呈示された第 1 案の方で解決できました。
> ということで、一応の解決を見たわけですが、第 2 案の方はビルトの際にエラーが出てしまいました。

私は一つの案しか提示したつもりがありませんので、申し訳ありませんが、意味が全く分かりません。第2案とは何で、Yukiさんは何をなさったのでしょうか?
■No18295に返信(管理人さんの記事)
>>早速のご回答有り難う御座いました。ご呈示された第 1 案の方で解決できました。
>>ということで、一応の解決を見たわけですが、第 2 案の方はビルトの際にエラーが出てしまいました。
>
> 私は一つの案しか提示したつもりがありませんので、申し訳ありませんが、意味が全く分かりません。第2案とは何で、Yukiさんは何をなさったのでしょうか?

管理人様、Yuki で御座います。

第 1 案/第 2 案と書いたのは
http://dobon.net/vb/dotnet/form/singleform.html
の前段と後段という意味です。

管理人様の誤解を招く様な書き方をしてしまい、申し訳御座いませんでした。

今後とも宜しくお願い致します。
解決済み!
> 第 1 案/第 2 案と書いたのは
> http://dobon.net/vb/dotnet/form/singleform.html
> の前段と後段という意味です。

つまり、シングルトンデザインパターンを使った例ですね。この方法がいい方法かどうかは分かりませんが、エラーが出るようなことはないと思います。

...と考えつつ、No18287のご投稿を拝読していて、理由が分かりました。partialが削除されてしまっています。"class"の前にでも"partial"を入れてください。でも、解決済みのようですから、解決されたのでしょうか?
■No18324に返信(管理人さんの記事)
>>第 1 案/第 2 案と書いたのは
>> http://dobon.net/vb/dotnet/form/singleform.html
>>の前段と後段という意味です。
>
> つまり、シングルトンデザインパターンを使った例ですね。この方法がいい方法かどうかは分かりませんが、エラーが出るようなことはないと思います。
>
> ...と考えつつ、No18287のご投稿を拝読していて、理由が分かりました。partialが削除されてしまっています。"class"の前にでも"partial"を入れてください。でも、解決済みのようですから、解決されたのでしょうか?

管理人様、Yuki で御座います。#18324 に書かれた様に partial を入れてテストプロで試した結果、上手く行きました。最終的にはこの方式で行きたいと考えております。

いろいろお教え頂き、本当に有り難う御座いました。
解決済み!

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