- PR -

Windowsフォームをロード時から非表示にする方法

1
投稿者投稿内容
みらー
会議室デビュー日: 2002/12/06
投稿数: 6
投稿日時: 2002-12-06 16:47
はじめまして。

非常にしょーもない質問のような気がするのですが、ご存知の方がいらっしましたら
お教えください。

C#でもVBでも構わないのですが、Windowsアプリケーションとして作成した
フォームがあり、それを初期状態から非表示にしたいのです。
VB6ではForm_LoadイベントプロシージャにMe.Visible=falseと記述しておけば
実現できたのですが、.NETではうまくいかずにフォームが表示されてしまいます。
Form1_LoadとOnLoadの両方で試してみましたが、うまくいきませんでした。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Visible = False
End Sub

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
Me.Visible = False
End Sub

このフォーム上にボタンを配置して、そのなかでVisibleプロパティをFalseに
すると、うまくいきます。また、OnLoadではなくOnActivatedに記述を
移すと、一瞬フォームが見えたあとで非表示になります。

何か基本的な事を見落としているような気もしますが、
どなたか対処法を教えていただけませんでしょうか。
poteto
ベテラン
会議室デビュー日: 2002/08/08
投稿数: 50
投稿日時: 2002-12-06 18:45
最小化にしてタスクバーに表示させるのではダメなのですか?

最小化にするのであれば、フォームのプロパティの『WindowsState=Minimized』でできます。

また、たまたま発見したのですが、『WindowsState=Minimized』にして、コードの Form_Load イベントのところに『this.visible = false』を記述しておいたら、何か隠れたっぽいです。。。
この方法が適切かどうかはわかりませんが。
Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2002-12-06 18:48
Application.Run(new Form1());

は表示までしてしまうので、

new Form1();
Application.Run();

とするのはどうでしょうか?

VB.NETではスタートアップの設定を変えて、自分で作った
Sub Mainを指定して、その中で上記のようにする必要がある
と思います(たぶん)
みらー
会議室デビュー日: 2002/12/06
投稿数: 6
投稿日時: 2002-12-08 23:31
potetoさん、Valhallaさん、どうもご返答ありがとうございました。

potetoさんが教えていただいた方法で対処することにしました。
Valhallaさんが教えていただいた方法も試してみたのですが、実は他の
アプリケーションとの連携の問題があり、FormはLoadした後でないと
そちらの方がうまく動作しなかったためです。

お二人ともどうもありがとうございました。
poteto
ベテラン
会議室デビュー日: 2002/08/08
投稿数: 50
投稿日時: 2002-12-09 09:21
どうもです。

採用された方法については、ベテランの方々にフォローを頂いたほうが良いかと・・・
なんせ、たまたま発見した方法ですので、なんで、うまいこと隠すことが出来たのか、腑に落ちないところがありますね(~~;
なんか、.NETのバグってことも考えられるような気がするのですが。
※それは無いか。。。

自分で言っておきながら、スンマセン。
1

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