私のアプリケーションには、独自のカスタムファイルタイプがあります。エクスプローラーで開いているファイルからアプリケーションを起動したのか、アセンブリから開いたばかりなのかを検出するように設定しました。ファイルの1つをアプリケーションの外部から開くと、アプリケーションが正常に開き、ファイルがアプリケーションのテキストエディタに読み込まれることを除けば、すべてが正常に機能しています。唯一の問題を除いて、ファイルをテキストエディタに2回ロードします。理由がわかりません。誰かが光を当てることができますか?
コードは、フォームの読み込みとして機能するオーバーライドで呼び出されています。これは、スタートアップフォームが起動時に表示されないためです。ただし、通知アイコンが表示されているため、処理を実行したり、フォームを表示したりできます。このコードの一部を使用する他の唯一のスポットは、コンテキストメニューでメニュー項目をクリックしたときですが、openfiledialogが開き、ダイアログでファイルが開きます。
編集:サブに残りのコードを追加しました。
私は自分の問題の解決策を見つけました、私は修正で自分の質問に答えました。助けてくれた人には感謝しません。また、Hans Passantは、ここに表示されているオーバーライドコードの作成者であるため、感謝したいと思います。これにより、通知アイコンを表示したまま、スタートアップフォームを非表示のままにすることができます。
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
If (Environment.GetCommandLineArgs.Length > 1) Then
Dim s As String = Environment.GetCommandLineArgs(1)
Using sr As New StreamReader(s)
While Not sr.EndOfStream
Dim item As New ListViewItem
item.SubItems.Add(sr.ReadLine())
ListView3.Items.Add(item)
End While
End Using
For I = 0 To ListView3.Items.Count - 1
ListView3.Items(I).Text = CStr(I)
Next
End If
答えは以下に見ることができます。