質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

7448閲覧

WinFormプロジェクトにてフォームを表示させずに処理を行う方法。

yuki00079

総合スコア45

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/10/12 00:37

###前提・実現したいこと
タイトルどおりではあるのですが、WinFormにてFormを表示させずに処理を行いたいと考えております。
コンソールプロジェクトで実装すればよいだけの話なのですが、引数なしでの実行時にはFormを表示したい為の実装となっております。処理としては実現できているのですが、下記の手法では微妙にFormが表示されてしまいます。

###現在のソースコード

Private Sub FrmMain_Shown(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shown Select Case '実行時に引数があるかチェック。 Case '引数がある場合、Formを表示させずに処理をする。 Me.Visible = False '処理 Me.Close() Case Else '引数がない場合、フォームを表示。 End Select End Sub

###補足情報(言語/FW/ツール等のバージョンなど)
可能であればWinFormプロジェクトのまま実行時の切り替えがスマートに行えたらと考えております。

ご助言いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

最近のVB.NETの場合、アプリケーションフレームワークが使用できます。
プロジェクトのプロパティー「アプリケーションの設定」でアプリケーションフレームワークを有効にし、同じページ内の「アプリケーションイベントの表示」ボタンを押します。
それにより、MyApplicationクラスが表示され、Startup,Shutdown,UnhandledException等のイベントが使用できます。
Startupイベント内で処理を書けば、フォーム表示前の処理を書くことができます。

投稿2016/10/12 03:42

shiyavako

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki00079

2016/10/14 02:56

返信が遅れてしまい失礼しました。 ピンポイントな情報ありがとうございます。 無事実装が行えました。 >最近のVB.NETの場合 興味本位ですが、C#でも同様の実装方法なのでしょうか。
shiyavako

2017/02/04 14:12

かなり前の投稿なのでもう見てないかもしれませんが、一応回答しておきます。 「最近のVB.NET」と書きましたが、Visual Studio 2005か2008ぐらいからなのでもうかなり前ですね。アプリケーションフレームワークはVB.NET用のものとなります。C#では、デフォルトでMainメソッドが作成されますので、そこで記述します。VB.NETではこの部分をアプリケーションフレームワーク内で実装しているということです。
yuki00079

2017/02/06 10:38

回答ありがとうございます。 C#とVBではこの辺の勝手は違うようですね。他の方のソースを見ていて似たような処理を見つけました。
guest

0

最近のVB.NETを触っていなく、且つ手元に環境がないのですが、一般的にはフォームではなくSub Mainを作って、そこをスタートアップとして設定します。
http://www.atmarkit.co.jp/ait/articles/0305/30/news002.html

Sub Main の中で引数を判定し、引数がなければ、フォームのインスタンスを作成してShowしてあげれば良いと思います。

投稿2016/10/12 01:07

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

どういう処理を実行したいか不明ですが、
スタートアップフォームが起動される前にMainクラスで処理しては如何ですか。

VB.NETの場合はアプリケーションフレームワークがエントリポイントを隠していたと思うので以下を参考にエントリポイントの作成をしてみてください。

http://dobon.net/vb/dotnet/programing/makeentrypoint.html

投稿2016/10/12 01:01

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki00079

2016/10/12 01:36

>どういう処理を実行したいか不明ですが、 不明慮で申し訳ございません。。 エントリーポイントの変更ですか。忘れておりました。 ネット上のサンプルを見ても、C#ではこのような手法をよくとっていますがvbでは見かけないので・・・。 実装は出来たのですがお伺いしたいことがございます。 Module Program <STAThread()> Sub Main() If MessageBox.Show("test", "", MessageBoxButtons.YesNo) = DialogResult.Yes Then Application.Run(New FrmMain()) Else 'フォーム非表示で処理。 End If End Sub End Module 上記のコードで出来たのですが、スタートアップオブジェクトを選択する際に以下が表示されます。 ○Sub Main ○FrmMain ○Program 上記でいうSub Mainとはどこに該当するのでしょうか。新規作成したModuleをProgramとしてコードを書いたのですが、Sub Mainとは?。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問