C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: フォームを非表示でロード


(過去ログ 55 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■31074 / inTopicNo.1)  フォームを非表示でロード
  
□投稿者/ kazu (1回)-(2009/01/15(Thu) 09:07:10)

分類:[C#] 

フォームを非表示でロードさせるには、どうしたら良いでしょうか?

例えば、下記のように行った場合だと、一瞬、フォームが表示されてしまいます。
今回は、一瞬でも表示させない方法を探しております。

ご教示、お願いいたします。

private void Form1_Load(object sender, EventArgs e)
{
this.Visible = false;
}
引用返信 編集キー/
■31075 / inTopicNo.2)  Re[1]: フォームを非表示でロード
□投稿者/ よねKEN (250回)-(2009/01/15(Thu) 09:13:02)
No31074 (kazu さん) に返信
> フォームを非表示でロードさせるには、どうしたら良いでしょうか?

「非表示でロードさせる」の意味がよくわからないのですが、
それによってどういうことを実現したいのでしょうか?

Form f = new Form1();
のようにインスタンスを作成するだけではダメですか?
(Loadイベントは起きませんが、Form1のインスタンスは作成されるのでアクセスすることはできます)

> 例えば、下記のように行った場合だと、一瞬、フォームが表示されてしまいます。

Loadイベントは「フォームが初めて表示される直前に発生します」
というイベントなので、そういうものかと思います。

引用返信 編集キー/
■31076 / inTopicNo.3)  Re[1]: フォームを非表示でロード
□投稿者/ VBG (1回)-(2009/01/15(Thu) 09:17:44)
No31074 (kazu さん) に返信
> フォームを非表示でロードさせるには、どうしたら良いでしょうか?
>
> 例えば、下記のように行った場合だと、一瞬、フォームが表示されてしまいます。
> 今回は、一瞬でも表示させない方法を探しております。
>
> ご教示、お願いいたします。
>
> private void Form1_Load(object sender, EventArgs e)
> {
> this.Visible = false;
>
http://dobon.net/vb/dotnet/form/notopenform.html
このへんが参考になるかと
引用返信 編集キー/
■31080 / inTopicNo.4)  Re[1]: フォームを非表示でロード
□投稿者/ 渋木宏明(ひどり) (1024回)-(2009/01/15(Thu) 09:44:11)
渋木宏明(ひどり) さんの Web サイト
> 例えば、下記のように行った場合だと、一瞬、フォームが表示されてしまいます。
> 今回は、一瞬でも表示させない方法を探しております。

抜本的な対策はありません。

Windows.Forms では、Show() によって「ウィンドウとしての実体化」と「ウィンドウの可視化」が行われていて、これらは不可分です。

僕は、フォームの初期表示を「なるべく目立たなくする」ために

Form.WindowState = FormWindowState.Minimized;
Form.ShowInTaskBar = false;

などの対策をしています。

>http://dobon.net/vb/dotnet/form/notopenform.html
>このへんが参考になるかと

なります?

結局、フォームを表示しないまま Main() を抜けてしまっているように見えるけど。
引用返信 編集キー/
■31082 / inTopicNo.5)  Re[2]: フォームを非表示でロード
□投稿者/ .SHO (529回)-(2009/01/15(Thu) 09:58:50)
Application.Run( new Form1() );

を

Form f = new Form1();
   :
(ココで何かする)
   :
Application.Run( f );

とか?

引用返信 編集キー/
■31083 / inTopicNo.6)  Re[2]: フォームを非表示でロード
□投稿者/ επιστημη (1519回)-(2009/01/15(Thu) 10:02:09)
επιστημη さんの Web サイト
> Windows.Forms では、Show() によって「ウィンドウとしての実体化」と「ウィンドウの可視化」が行われていて、これらは不可分です。

ホントだー。Visibleをfalseにしといてもダメなのねぇ...
画面に現れる前に(できることを)なんかしたいなら

   static void Main()
   {
     ....
     Form1 frm = new Form1();
     frm.Visible = false;
     // ここでなんかする
     Application.Run(frm);
   }

じゃダメですか?

引用返信 編集キー/
■31087 / inTopicNo.7)  Re[3]: フォームを非表示でロード
□投稿者/ kazu (2回)-(2009/01/15(Thu) 10:19:43)
>-------------------------------------------------
>よねKENさん
>-------------------------------------------------
私もどう表現すれば良いのか悩んでました(^^;

実現したいことは、こういう事です。
・Windowsスタートアップでこっそり起動
・手動でアプリ起動した際(=2重起動の際)に一瞬でフォーム表示

>Form f = new Form1();
>のようにインスタンスを作成するだけではダメですか?
これは、Program.cs内にて、
  Application.Run(new Form1());
とあるのを
  Form f = new Form1();
と書き換えてやれば良いのですね?

試してみます。ありがとうございました。


>-------------------------------------------------
>VBGさん
>-------------------------------------------------
これ、試したのですが、フォームが生成(?)されないために、
求めていること(上記)ができませんでした。


>-------------------------------------------------
>渋木宏明さん
>-------------------------------------------------
なるほど、そういう理由なのですね。
初期表示を「なるべく目立たなくする」作戦、
勉強になりました。
ありがとうございました。

>フォームを表示しないまま Main() を抜けて
まさに、そうでした。


>-------------------------------------------------
>.SHOさん
>-------------------------------------------------
よねKENさんのアドバイスの実行方法が、
少し自信なかったのですが、これですね。
ありがとうございます。
今から試してみます。


>-------------------------------------------------
>επιστημηさん
>-------------------------------------------------
> Windows.Forms では、Show() によって
> ...これらは不可分です。

これは私も驚きでした。
書いて頂いたコード、今から試してみます。
ありがとうございます。

引用返信 編集キー/
■31089 / inTopicNo.8)  Re[4]: フォームを非表示でロード
□投稿者/ επιστημη (1521回)-(2009/01/15(Thu) 10:27:06)
επιστημη さんの Web サイト
> 書いて頂いたコード、今から試してみます。
> ありがとうございます。

そじゃなくてぇ...

「画面上にあるけど見えない」状態でないとできないことであれば無理ですよ。
newした時点ではまだ画面上に存在しませんから。

引用返信 編集キー/
■31092 / inTopicNo.9)  Re[4]: フォームを非表示でロード
□投稿者/ よねKEN (251回)-(2009/01/15(Thu) 10:43:21)
2009/01/15(Thu) 10:44:30 編集(投稿者)

No31087 (kazu さん) に返信
> 実現したいことは、こういう事です。
> ・Windowsスタートアップでこっそり起動
> ・手動でアプリ起動した際(=2重起動の際)に一瞬でフォーム表示

要件は、アプリの起動を速く(なったように)したい!ということでしょうか。
そのために、スタートアップでこっそり起動しておき、
フォームの準備(=Loadイベントの処理まで)を完了させておきたい。
現状はこのときに画面がちらっと見えて困る、ということで合ってますか?

こういうことであれば、 No31080 の渋木ひどりさんの案がよいのではないでしょうか。

引用返信 編集キー/
■31093 / inTopicNo.10)  Re[5]: フォームを非表示でロード
□投稿者/ kazu (3回)-(2009/01/15(Thu) 10:44:31)
>επιστημη さん

あ、、、すみません(^^;
説明不足でした。

教えて頂いたアドバイスで突破口が開けそうなのです。

やりたいことは「高速起動」だったので、
その方法を用いて考えてみます。

ngenを用いる方法は、私の理解度が低いせいか、
あまり高速起動できない場合が多いので(^^;
引用返信 編集キー/
■31097 / inTopicNo.11)  Re[5]: フォームを非表示でロード
□投稿者/ kazu (4回)-(2009/01/15(Thu) 11:44:58)
皆さま、ありがとうございました。

「Form f = new Form1();」にて、
ひとまず、当面の目標である「完全非表示」に成功しました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -