C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94101 の関連記事表示

<< 0 >>
■94101  フォームを表示させる方法
□投稿者/ aaa -(2020/03/13(Fri) 11:51:05)

    分類:[.NET 全般] 

    昨日 
    ■94091 / inTopicNo.1  モジュールでのメッセージボックス表示
    について質問させていただき、回答していただいた通りに設定を変更したところ新たな問題が出てきたので質問させてください。

    スタートアップオブジェクトに設定しているSub Main関数でフォーム表示処理を行っていますが、
    アプリケーションを起動してもフォームが表示されずにすぐに閉じてしまいます。

    どなたかアプリケーションを起動してフォームを表示させる方法を教えてください。
    よろしくお願いします。
親記事 /過去ログ163より / 関連記事表示
削除チェック/

■94102  Re[1]: フォームを表示させる方法
□投稿者/ KOZ -(2020/03/13(Fri) 12:19:07)
    2020/03/13(Fri) 12:27:05 編集(投稿者)

    No94101 (aaa さん) に返信
    > スタートアップオブジェクトに設定しているSub Main関数でフォーム表示処理を行っていますが、
    > アプリケーションを起動してもフォームが表示されずにすぐに閉じてしまいます。

    VB6 と同様に動かす(すべてのフォームが閉じたときに終了)のであれば、
    Sub Main を書いたモジュールを以下の様に置き換えてみてください。

    Imports Microsoft.VisualBasic.ApplicationServices

    Friend Class MyApplication
    Inherits WindowsFormsApplicationBase

    <STAThread>
    Friend Shared Sub Main(ByVal Args As String())
    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    ' ここで初期処理
    With New MyApplication
    .ShutdownStyle = ShutdownMode.AfterAllFormsClose
    .Run(Args)
    End With
    End Sub

    Protected Overrides Sub OnCreateMainForm()
    MyBase.MainForm = New Form1()
    End Sub

    End Class
記事No.94101 のレス /過去ログ163より / 関連記事表示
削除チェック/

■94104  Re[1]: フォームを表示させる方法
□投稿者/ 魔界の仮面弁士 -(2020/03/13(Fri) 14:25:35)
    No94101 (aaa さん) に返信
    > スタートアップオブジェクトに設定しているSub Main関数でフォーム表示処理を行っていますが、
    > アプリケーションを起動してもフォームが表示されずにすぐに閉じてしまいます。

    ShowDialog メソッドでモーダルなフォームを表示するのではなく、
    Show メソッドでモードレスとして表示されているのですよね。

    だとすると、Show を呼んだあとに End Sub に到達してしまい、
    プログラム自体が終了してしまっているはずです。


    Show を呼ぶのではなく、メインフォームのインスタンスを
    Application.Run メソッドまたは MyApplication.Run メソッドの引数に渡せば、
    そのフォームが閉じられるまで、Sub Main が終了せずにすみます。


    しかし、そもそも Sub Main() を使わないという選択肢もあります。


    (1) プロジェクトのプロパティ(My Project)の、[アプリケーション]タブを開く。

    (2)「アプリケーション フレームワークを有効にする」は On のままにしておく。

    (3)「シャットダウンモード」に、どちらか好きなモードを指定する。
     ※"最後のフォームが閉じるとき" を指定すると、VB6 の動作に近くなります。

    (4) 同画面右下の「アプリケーション イベントの表示」ボタンを押す。

    (5) ApplicationEvents.vb 編集画面上部にならぶ 3 つのドロップダウンのうち、
     中央のものから「(MyApplication イベント)」を選択し、
     右側のものから「Startup」を選択して、
     これを Sub Main の代わりにする。


    Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
      'For Each arg As String In e.CommandLine
      '  Debug.WriteLine(arg)
      'Next

      If 任意の起動判定処理 Then
        'スタートアップフォームを起動させず、アプリを終了させる
        e.Cancel = True
      Else
        '通常通り、スタートアップフォームの起動処理に進ませる
        e.Cancel = True
      End If
    End Sub
記事No.94101 のレス /過去ログ163より / 関連記事表示
削除チェック/

■94103  Re[2]: フォームを表示させる方法
□投稿者/ aaa -(2020/03/13(Fri) 14:16:05)
    > ■No94101 (aaa さん) に返信
    >>スタートアップオブジェクトに設定しているSub Main関数でフォーム表示処理を行っていますが、
    >>アプリケーションを起動してもフォームが表示されずにすぐに閉じてしまいます。
    >
    > VB6 と同様に動かす(すべてのフォームが閉じたときに終了)のであれば、
    > Sub Main を書いたモジュールを以下の様に置き換えてみてください。
    >
    > Imports Microsoft.VisualBasic.ApplicationServices
    >
    > Friend Class MyApplication
    > Inherits WindowsFormsApplicationBase
    >
    > <STAThread>
    > Friend Shared Sub Main(ByVal Args As String())
    > Application.EnableVisualStyles()
    > Application.SetCompatibleTextRenderingDefault(False)
    > ' ここで初期処理
    > With New MyApplication
    > .ShutdownStyle = ShutdownMode.AfterAllFormsClose
    > .Run(Args)
    > End With
    > End Sub
    >
    > Protected Overrides Sub OnCreateMainForm()
    > MyBase.MainForm = New Form1()
    > End Sub
    >
    > End Class


    返信ありがとうございます。
    KOZ さんに教えていただいた通りにコードを修正したところ、
    ちゃんとフォームが表示されるようになりました。

    ありがとうございました。
記事No.94101 のレス / END /過去ログ163より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -