在我的应用程序中,我有自己的自定义文件类型。我将其设置为检测应用程序是从资源管理器中打开的文件启动的,还是刚刚从程序集中打开的。一切都很好,除了当我的一个文件从应用程序外部打开时,它会像它应该的那样打开应用程序并将文件加载到我的应用程序的文本编辑器中,就像它应该的那样。除了唯一的问题是将文件加载到文本编辑器中两次。我不知道为什么。任何人都可以解释一下吗?
代码在充当表单加载的覆盖中被调用。这样做的原因是因为我的启动表单在启动时是不可见的,除了它显示通知图标以便可以完成操作,或者可以显示表单。唯一使用此代码的其他地方是在上下文菜单中单击菜单项时,尽管这会打开一个 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
答案可以在下面看到。