Form.Visibleは状態ではなく手続き?

「コンピュータのIPアドレスの出し方教えて〜」
netmeeting文化が花開いたのは喜ばしいことなのですが、それに付随して増えてしまったこのようなうっとおしい重要な問題。これはWindows中心の多くの企業で問題となるうっとおしい重要な質問です。
「cmd.exeを実行してですね、そのあと ipconfigで...」
「cmd.exeってなんやねん」
「ipこんふぃぐ?つづりは」
... etc etc ...
「ぐぐれかす」などと言ってはいけません。ここは正常な世界。そもそも相手が上司だったりすると、これは重要を通り越して殺意真剣な問題です。
この重要な案件を解決するために、私tkuroはとりあえずwindowsアプリでちゃらっとIPアドレスを表示できるソフトを即効書きすることにしました。それがこちらです。


meIP - display local machine's IP address
とまあ、冗談はそれくらいで*1
#実際問題、タスクトレイに接続情報表示している人なら「ローカルエリア接続の状態」-「サポート」で良いらしい
ちょっと余った時間で .net遊んでみたんだけど、なんという簡単さ。なんという情報の多さ。といった感じで驚いた。
実際ここまでネット上に情報があふれかえっていると、日本語でgoogle検索して、その結果からコードスニップルを展開する、というメソッドでスーパー集合知IDEが作れてしまうのではないか*2、と思ってしまうレベル。「あれやりたい」とぐぐって解決方法が見当たらないのは・・・・そう、「彼女の作り方」くらいかw
とまあ、冗談は(ry

やっていて少しわからなくなったのが、デフォルトでフォームを表示させない方法。基本的には(ウィンドウマップ後であれば)Form.Visibleに falseを送ってやればよいようなんだけれど、コンストラクタやInitializeComponent()中でVisible変更しても、なぜか表示されてしまう。
おそらくこれは Visible = false; はForm内部に状態を保存しているわけではなく、単に Form->Hide()を呼び出しているだけ、と当たりをつけたまでは良かったんだけれど、その後どうしたらよいのかわからない。
とりあえず、いろいろデバッガで追ってみたらウィンドウが出るのはLoadした直後、Shownの直前のようでShownイベントでVisible=falseにすればよいっぽい、、、んだけどそうすると表示後に消すのでスタートアップ直後に一瞬出てしまってかっこ悪い(当然Loadでfalseにしても無駄)。
結局一番かっこ悪い Opacity=0にしておいて後から消す方式になってしまった。う〜ん、詳しい方、おしえてー。

*1:いや半分くらい本気かも?

*2:あ、なんかいいアイディアな気がしてきた