Formを非表示にしたい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/11/24 13:34:03
> Sub Main をどこに作成するのかが
任意のクラスやモジュール内に記述できます。

ただし、Main をクラス内で定義する場合は Public Shared として宣言し、
モジュール内で定義する場合は Public として宣言する必要があります。


たとえば、
Module モジュール名
  Public Sub Main()

  End Sub
End Module

あるいは
Class クラス名  'Form1 等でも OK 
  Public Shared Sub Main()

  End Sub
End Class

などといった記述になります。


あとはこの中でさらに、フォームの表示などといった処理を行ってやれば OK です。
(通常は、Application.Run というメソッドを利用してフォームを表示させます。)


また、俗に「Sub Main」とは呼ばれていますが、実際には「Function Main」として
宣言することも可能です。使用可能なパターンは以下の 4 種類です。
 Sub Main() 
 Sub Main(ByVal CmdArgs() As String) 
 Function Main() As Integer 
 Function Main(ByVal CmdArgs() As String) As Integer 


以下、参考資料として。
http://www.atmarkit.co.jp/fdotnet/dotnettips/524vb2005main/vb2005main.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html
http://dobon.net/vb/dotnet/programing/makeentrypoint.html
http://dobon.net/vb/dotnet/form/notopenform.html
http://msdn.microsoft.com/ja-jp/library/ms235406%28vs.80%29.aspx
投稿者 るきお  (社会人) 投稿日時 2011/11/24 13:07:51
たとえば、プロジェクトにクラスを新規追加してその中に書きます。

調べる手順はSub Mainだからといって特別なことはなく、Webで「Sub Main」と検索して情報を収集したり、MSDNライブラリや書籍の該当箇所を読んだりすることになります。
投稿者 単単  (社会人) 投稿日時 2011/11/23 14:27:19
るきおさん。

再び、ありがとうございました。
アドバイスいただいた、最初の案で、うまくいくことを確認できました。
後者の案でもトライしましたが、Sub Main をどこに作成するのかが
ヘルプや、参考書を読んだのですが、判りませんでした。
恐縮ですが、ご指導お願いできないでしょうか?
調べる手順だけでもOKです。 当方、VB2010Express です。
よろしくお願いいたします。 
投稿者 るきお  (社会人) 投稿日時 2011/11/23 11:54:56
バージョンが書いていないのでVisual Basic 2010 Express Editionを使っていると仮定してお答えします。

初期状態ではスタートアップフォームが表示されなくなるとプログラム全体が終了してしまいます。
これを変更して、どれか1つでもフォームが表示されていればプログラムは終了しないようにするには、
[プロジェクト]メニューの[xxxxのプロパティ]で「アプリケーションページ」を選択し、「シャットダウンモード」を「最後のフォームが閉じるとき」にします。
そのうえで、Form1はForm2、Form3を表示してから自分自身を閉じる(か非表示にする)ようにすれば単単さんの期待する動作になると思います。
順番を逆にして、Form1を閉じてからForm2, Form3を表示しようとするとプログラムが終わってしまうので注意してください。

別の方法として、同じ設定画面で「アプリケーションフレームワークを有効にする」をオフにして、「スタートアップオブジェクト」を「Sub Main」にするとFormではない部分からプログラムを開始することもでき、これでも解決できますが、単単さんがVBの勉強をはじめたばかりということですのでこの説明は割愛します。
投稿者 単単  (社会人) 投稿日時 2011/11/23 11:41:28
スタートアップフォームを Form1として、
Form1の中にVBを記述しました。
その内容は、CAD上の文字を選択して、その値を取り込むというものです。
この取り込んだ、内容に応じて Form2 または Form3 がロードされるように
なっています。
うまく動作しているのですが、空白のForm1が表示されています。
そこで
・スタートアップで、フォーム無しで起動
・フォームを非表示にする。
などをしたいのですが、どうしたら良いでしょうか?
よろしくお願いいたします。
私のスキルは、VBの勉強をはじめたばかりです。