2014-12-18 5 views
0

내가 VB.NET에 (Win32에서 양식을) 두 개의 프로젝트를 시작합니다. 그것은 확인란에서 내 실시간 엔진을 활성화하는 옵션이 있습니다.사실 make 프로그램에</p> <p><strong>1</strong> 첫 번째 응용 프로그램은 사용자와의 직접적인 상호 작용을위한 다시

2. 실시간 엔진 (Windows가 시작될 때 백그라운드에서 실행되는 양식)에도 체크 박스가 있기 때문에 p. 1에서 직접 열면 표시되어야합니다. 이 양식은 p # 1에 의해 수입됩니다.

그래서 # 1 프로젝트의 버튼에서 프로젝트 # 2를 열 때 (다른 옵션이 있기 때문에) 그리고 창으로 시작할 때 보이지 않게해야합니다. 그것은

이 때 프로젝트 # 2 나는 위의 코드와 프로젝트 # 2에서 시작한다면 이미 실행, 그것은 다시로드 이벤트를 해고하고 윈도우 작업 관리자에서 를 실행하는 것입니다 ... 지금까지 좋아하지만 두 개의 동일한 프로세스. 내가 VISIBLE, 새로운 인스턴스를 다시 실행하지 수 위의 코드를 실행하면 그냥

합니다.

p # 2의 코드로, p # 1에서 호출됩니다.

Public Sub formsetup() 

     If normalwindow = True Then 
      Me.Size = New Size(466, 459) 
      Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog 
      Me.Opacity = 100 
      Me.ShowInTaskbar = True 
      Me.ShowIcon = True 
      Me.ControlBox = True 
      Me.Visible = True 

     Else 
      Me.Size = New Size(0, 0) 
      Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 
      Me.Opacity = 0 
      Me.ShowInTaskbar = False 
      Me.ShowIcon = False 
      Me.ControlBox = False 
      Me.Visible = False 
      ' Panel1.Dispose() 
      ' TextBox2.Dispose() 

     End If 
     Application.DoEvents() 
    End Sub 

이 작동 me.visible = true는 이유는 페이지 번호에서로드 이벤트 2 화재 다시 것 같다.

나는 P # 2의 메모리에 바로 인스턴스을 원하는, 반복, 나는 P # 1, 페이지 번호의 버튼을 클릭하면 2 만 표시하지는 다시로드 할 수 새창.

감사합니다.

+0

첫 번째 앱이 두 번째 앱에 액세스 한 부분을 표시해야합니다. 이들이 진정으로 2 개의 다른 앱인 경우, 이는 명확하게 설명 할 것입니다. – Plutonix

+0

Public Sub는 App # 2에 있습니다. 나는 App # 1에서 그것을 액세스한다. 예를 들어, 애플리케이션 # 1의 Button1_click에서 애플리케이션 2를 볼 수있게하려면 (기본적으로 보이지 않습니다) APP2.normalwindow = true APP2.formsetup()이라고 씁니다.이제는 APP # 2의 Load 이벤트가 다시 시작되어 새 인스턴스에서 시작될 때입니다. Me.visible = true 코드가 이유이지만 그 이유는 무엇입니까? 다시 시작할 필요없이 어떻게 보이게 할 수 있습니까? 첫 번째 응용 프로그램은 WPF 형식입니다. 두 번째는 Winform입니다. 그게 그렇게 중요하다고 생각하지 않아요, 안 그래요? 단일 인스턴스 응용 프로그램 확인란을 사용할 수도 있습니다. –

+0

코드 me.visible = true는 코드 form2.show() 또는 form2.showdialog()와 동일합니까? 그것이 App2의 내 양식이 다시 시작되는 이유입니다. 그렇다면 무엇을 할 수 있습니까? App2는 Windows에서 시작하여 App1 button1에서 수동으로 시작할 때까지 보이지 않습니다. 그런 다음 새로운 인스턴스를 시작하지 않는 것이 표시되어야합니다. App1에 쓰는 경우 APP2.FORM2.VISIBLE = TRUE 코드는 동일한 버그입니다. 다시 시작됩니다. –

답변

0

P # 2 응용 프로그램 속성에서 '단일 인스턴스 응용 프로그램 만들기'확인란을 선택하십시오. enter image description here

다시 활성화되면 양식 Visible = False을 설정했기 때문에 여전히 보이지 않습니다. 우리가 응용 프로그램 이벤트 아래 OnStartupNextInstance를 재정의해야이 문제를 처리하기 위해이 당신이 원하는 무엇

Protected Overrides Sub OnStartupNextInstance(ByVal e As StartupNextInstanceEventArgs) 
     MyBase.OnStartupNextInstance(e) 
     MyBase.MainForm.Visible = True` 
End Sub 

희망 (프로젝트 속성에서 응용 프로그램 이벤트보기를 클릭).

편집 : 언급 된 이벤트가 응용 프로그램 자체의 첫 번째 인스턴스에서 제기되는 주,의 시작하려고, 그래서 다시로드 된 이벤트가 없습니다하지 않는 새.