空のプロジェクト?

タグの編集
投稿者 kmkm  (社会人) 投稿日時 2009/10/6 13:34:58
Formを継承して(はじめて)MyFormを作ってみたのですが、
このMyFormのテストをどのように行うのかよくわからないので教えてください。

まず、テストとして、テストプロジェクトを「Windowsアプリケーション」で作成して、フォームのLoadで、New→ShowしてMyFormを動作させますと、MyForm自体は意図したとおりに動作しているようです。

が、これですと、そのテストのためのフォームが(当たり前ですが)出てきてしまいます。

で、単純にMyFormだけで動作させるには、
http://indori.blog32.fc2.com/blog-entry-673.html
を読んで、これは、「空のプロジェクト」ってやつを使わなければいけないんだなあと思ったのですが、その「空のプロジェクト」が、自分の使っている、VB2008EE には新しいプロジェクトの画面で出てきません。
それでどうすればよいのか途方にくれております。

「空のプロジェクト」がどこかにあるのでしょうか?
別の方法でやらなくてはならないのでしょうか?
・・・

すいませんがご助言をお願いいたします。
投稿者 るしぇ  (社会人) 投稿日時 2009/10/6 18:40:00
> 空のプロジェクト
必要ありません。

[ソリューションエクスプローラ]でプロジェクトファイルを右クリックして
[プロパティ]を表示。
[アプリケーション]タブの[スタートアップオブジェクト]を Form1 から
最初に起動したいフォームに変更することで、起動時のフォームを選択
できます。
http://msdn.microsoft.com/ja-jp/library/17k74w0c.aspx
投稿者 kmkm  (社会人) 投稿日時 2009/10/6 20:24:30
るしぇさん、ありがとうございます。

MyFormなのですが、言い忘れましたが、
クラスライブラリとして作ってしまっております。
また、Formといってもデザインは行ってなく、
単にいくつかのメソッドのOverridesをしただけです。

で、おっしゃるとおりに行いますと、
[アプリケーション]タブには、VB2008EEだけの
私の環境ですと、[スタートアップオブジェクト]というのはなく、
[スタートアップフォーム]という項目がありましたが
これと同じと思ってよろしいでしょうか?
で、上記で合っているとして、
Form1から選択を変えようとしても、Form1しかリストになく、
他に変えようがありません。
クラスライブラリとして作ってしまっているせいでしょうか?
それとも他になにか設定が必要なのでしょうか。
参照設定だけはしてあるつもりなのですが(参照プロジェクトとして)。
(いちおう、Importsして、Form1のLoadイベント時ですが
NewしてShowはできたのですが、、、)

そのうち、MyFormを既存のFormのように使えるようにしたいので、
MyFormにさらにデザインを加えられるデザイン画面っていうのも出てくれれば、
それでも構いません(というかそっちの方がありがたいです)。
投稿者 るしぇ  (社会人) 投稿日時 2009/10/6 21:02:14
クラスライブラリということは、EXE のメイン処理は別にあって、
そこから参照するという意味ですので、メイン処理にフォームを
使わないという意味で、フォーム起動の「Windowsアプリケーション」
では無くなってしまいますね。
当然、メイン処理のスタートアップには設定できません。

Sub Main の起動になります。
設定方法は先のリンク先に書いてあります。
[アプリケーション フレームワークを有効にする] を変更し、
スタートアップで Sub Main を選択。
起動用の Sub Main 関数をコーディングしてください。

> 私の環境ですと、[スタートアップオブジェクト]というのはなく、
> [スタートアップフォーム]という項目がありましたが
> これと同じと思ってよろしいでしょうか?
先のリンク先の説明で1行目に書いてると思いますが?
投稿者 kmkm  (社会人) 投稿日時 2009/10/6 22:32:30
るしぇさん ありがとうございます。
すいませんでした。リンクを完全に見落としておりました。
なんとかうまく行きました。(というように見える)
一応、確認させてください。
フレームワークをオフにして、Sub Mainに変更したら、
Mainがないとか言われたので、
Form1.vbにSub Main書いてもだめだったので
いろいろ調べてModuleファイルに以下のように
書いたらうまく行きました。
これであってますでしょうか?

Imports xxx
Module Module1
    Sub Main()
        Application.Run(New xxx.MyForm)
    End Sub
End Module


あと、他にもお聞きしたいことが。
1.使わなくなった、Form1っていうのは完全消去しても構わないものでしょうか。
  Form1.vbとかForm1.Designer.vbとか。。。
2.今回の設定を離れて、MyFormにデザインを追加して使いたいけど、
  MyForm自体はそのままにしておきたいという場合、
  どのようにすればよいのか、もしお分かりでしたら教えてください。
  デザイン画面にどうしたらなるのかわからないのです。
  既存のFormをMyFormに置換えた感じのイメージです。

たびたび恐れ入りますが、
よろしくお願いいたします。
投稿者 るしぇ  (社会人) 投稿日時 2009/10/7 00:48:43
> これであってますでしょうか?
あってるんじゃないでしょうか。
# Imports xxx の1行は無くても動きそうですが。
Class に書く方法もあります。
[DOBON.NET Tips アプリケーションのエントリポイントを自作する]
http://dobon.net/vb/dotnet/programing/makeentrypoint.html
> Form1.vbにSub Main書いてもだめだったので
単純に Form1 クラスに書いただけでは Form1 のインスタンスを生成
しないと実行できないから、じゃあその前は何が実行するの?って
話でしょうね。


> 1.使わなくなった、Form1っていうのは完全消去しても構わないものでしょうか。
大体のことは個人的に試してるけど、ドキュメントとか示せないので
ボクの判断を採用してもしょうがないと思います。
まぁ、やってみればいいのでは?

プロジェクトのフォルダを丸ごとコピーしておけばバックアップになり、
コピー先はどんなに壊しても大丈夫です。


>2.今回の設定を離れて、MyFormにデザインを追加して使いたいけど、
>  MyForm自体はそのままにしておきたいという場合、
日本語になってないような気もするけど、技術的な話からいけば
MyForm をメイン処理の新規フォームで継承すればいいのでは?

# ある時点の MyForm から開発を始めたいというなら、ファイルコピーで
# プロジェクトに追加した後、クラス名とかを調整してやってもいいけど、
# そういう話ではないよね?

Form ファイルを追加するときに[カテゴリ]から[Windows Forms]を
選べば[継承されたフォーム]というのが追加できます。
多分、Designer.vb と Resources File をうまく作ってくれるんだろうケド、
そこまで細かく解析したことは無いです。(いつも自動作成におまかせ)

プロジェクトに Form2 を普通に追加した時点で Form を継承するので
> Formを継承して(はじめて)MyFormを作ってみたのですが、
がクラスとして追加してないか?とか妙なところはありそうですが。。。
# クラスとして追加したものの Designer.vb とかどうやって作るのか
# やったことないです。

まぁ、作成されるファイルは軒並みテキストファイルなので色々な設定で
作成して、比較してみたらいいんじゃないでしょうか。

あとは、デザイナで開ける条件が幾つかあります。
WEB上を「継承 フォーム デザイン」といったキーワードで検索してみて
ください。
投稿者 kmkm  (社会人) 投稿日時 2009/10/7 02:54:08
るしぇさん たびたび、ありがとうございます。
本日はあまり時間がないので
明日以降いろいろと試してみます。

時間がかかりそうなので
まずはお礼まで
投稿者 トマト  (小学生) 投稿日時 2009/10/10 02:44:18
いきなり入ってすいません。
>「空のプロジェクト」がどこかにあるのでしょうか?
そういえばVBExpressにはありませんね。C#Expressにはあるのに。
ということはVisualStudioを買えばついてくるのでしょうか?
VisualStudio、ほしいです。