在1个解决方案中更新其他项目的UI

问题描述:

是否可以在同一解决方案中使用Project2更新Project1的UI?我设法运行并使用Project2访问Project1中的类,但不控制。到目前为止,我试过的FF:在1个解决方案中更新其他项目的UI

在PROJECT1 Loaded()事件:

Dim newMenu As MenuItem 
    newMenu = New MenuItem() 
    newMenu.Header = "This is new" 
    newMenu.Tag = "1" 
    AddHandler newMenu.Click, New EventHandler(AddressOf menuClick) 
    myMenu.Items.Add(newMenu) 

menuClick()

Private Sub menuClick(sender As Object, e As RoutedEventArgs) 
    If sender.Tag = "1" Then 
     Dim progTag As Integer = Integer.Parse(sender.Tag) 
     Dim restriction = (From x In localdb.Restrictions 
          Where x.Username = "oliverc" Where x.Program_ID = progTag 
          Select x.Module_ID) 

     If restriction.Count > 0 Then 
      For Each ListItem In restriction.ToList 
       restrict.Add(New Project2.Restrictions() With {.RestrictionTag = ListItem.ToString}) 
      Next 
     End If 

     For Each ListItem In restrict 
      MessageBox.Show(ListItem.RestrictionTag(0)) 
     Next 



     Dim frm As Project2.MainWindow = New Project2.MainWindow() 
     frm.ShowDialog() 

    End If 
End Sub 

Project2中Loaded()

For Each ListItem In listOfRestriction 
     Select Case ListItem.ToString 
      Case "1" 
       btn_addRegion.IsEnabled = False 
     End Select 
     MessageBox.Show(ListItem.ToString) 
    Next 

简短的回答:

长答案:

每个项目将被编译为独立的.exe或.dll。即使目前您尝试这样做的方式是可能的,Project2 -exe也不可能知道它应该修改的Project1的哪个实例(如果有的话)。

为了与其他exe进行通信,您需要实现Interprocess communication。那么你必须有Project1自己改变每当它被告知这样做Project2

有些类型的IPC可以使用: