4

ここで何が問題なのかわかりません。プロジェクトをゼロから開始し、デバッグに行き、エラーを受け取りました:

System.InvalidOperationException は処理されませんでした Message=フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

自動生成されたファイルでこのエラーが発生する理由がわかりません。コード全体は次のとおりです。

    '------------------------------------------------------------------------------
' <auto-generated>
'     This code was generated by a tool.
'     Runtime Version:4.0.30319.269
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------

Option Strict On
Option Explicit On


Namespace My

    'NOTE: This file is auto-generated; do not modify it directly.  To make changes,
    ' or if you encounter build errors in this file, go to the Project Designer
    ' (go to Project Properties or double-click the My Project node in
    ' Solution Explorer), and make changes on the Application tab.
    '
    Partial Friend Class MyApplication

        <Global.System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Sub New()
            MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
            Me.IsSingleInstance = false
            Me.EnableVisualStyles = true
            Me.SaveMySettingsOnExit = true
            Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
        End Sub

        <Global.System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Protected Overrides Sub OnCreateMainForm()
            Me.MainForm = Global.AccountAndClientFull.frmMain 'HERE IS WHERE THE ERROR OCCURS
        End Sub
    End Class
End Namespace

エラーが発生する場所:

Me.MainForm = Global.AccountAndClientFull.frmMain

助言がありますか?プロジェクト プロパティのアプリケーション タブでどのような変更を行う必要があるかわかりません。

4

9 に答える 9

5

同じエラーが発生し、フォーム コードでプライベート デフォルト コンストラクターを宣言したことが原因であることに気付きました。コンストラクターを作成して公開していない場合は、公開してみてください。

于 2012-10-01T20:09:52.323 に答える
3

frmMainというフォームクラスがあることを確認してください。ファイル名ではなく、クラス名に注意してください。

フォームファイル名の名前をfrmMain.vbに変更したかもしれませんが、ファイルのコードでは、クラスの署名は異なります。

于 2012-08-15T04:02:20.453 に答える
2

このエラーの別の考えられる原因は、初期化中にフォームのコントロールのイベント ハンドラーで例外が発生した場合です。フォームの作成が失敗するため、例外が発生します。

于 2013-09-03T08:33:58.800 に答える
0

クラスの直下にエラーの原因となる条件がある場合、このエラーでも中断されます。
例えば:

Public Class Form1
    Dim FILE_NAME As String = "C:\Folder\File.txt" '//if this file does not exist
    Dim objReader As New System.IO.StreamReader(FILE_NAME)

この最後の行により、Protected Overrides でエラーが発生します

于 2015-07-01T11:54:11.090 に答える
0

この症状の別の考えられる原因で、特にわかりにくいもの:

Designer の子フォームに 2 つの LineShape コントロールを追加したところ、Me.MainForm エラーが発生しました。

(Toolbox/Visual Basic PowerPacks/LineShape)。

ドキュメントのこのポイントは、手がかりを提供する場合があります。

「実行時に LineShape コントロールを作成するときは、ShapeContainer も作成し、LineShape の Parent プロパティを ShapeContainer に設定する必要があります。」

デザイナーを使用して LineShapes を追加したので、ShapeContainers を自動的に作成する必要がありましたが、おそらく数層の深さのコンテナー内にそれらを追加したため、失敗した可能性があります。問題を解決するために LineShapes を削除しました。

于 2013-10-07T09:49:24.393 に答える
0

私は同じ問題を抱えていました...フォーム内のすべてのツールを削除しましたが、問題なく実行されました...その後、問題の原因となったのはWebブラウザーコントロールであることがわかりました...削除して追加しました再び、プログラムは問題なく実行されました...コントロールを1つずつ削除して、問題の原因となっているコントロールを確認してください...次に、特定のコントロールを削除し、再度追加して機能させます...これは、ある PC から別の PC へのソリューション...

于 2018-04-18T17:11:12.240 に答える
0
 Public Sub New()
        InitializeComponent()
 End Sub
  • このコードをフォームに追加するだけです frmMain
于 2018-07-13T14:03:41.353 に答える
0

文字列から改行するときの VB.NET 機能が気に入らなかったので、このコードを下に追加Public Class Form1して、迷惑なものを削除しました。

Dim origString As String
Dim newString As String = origString.Replace(vbCr, "").Replace(vbLf, "")

このコードは同じ問題を引き起こしました。したがって、考えられる解決策は、コメントするか削除することです。

'Dim origString As String 'From Multiline Textbox'
'Dim newString As String = origString.Replace(vbCr, "").Replace(vbLf, "")
于 2015-09-11T09:29:03.463 に答える