簡體   English   中英

如何將值從一個窗口傳遞到另一個窗口

[英]How to pass value from one window to another

設置后如何將一個變量的值傳遞到文本框? 在winforms上,我曾經在winforms中使用form1.textbox1.text =變量。

我設置並從中獲取變量...

 Public Shared Property containerstring() As String
        Get
            Return m_containerstring
        End Get
        Set(value As String)
            m_containerstring = value
        End Set
    End Property

    Private Shared m_containerstring As String

基本上,我有一個窗口...用戶在其中選擇一個變量,然后將該變量設置為@ containerstring。 當此表單關閉時,我想將此變量推送到當前打開的窗口的文本框中。

我是WPF的新手,請原諒。

這就是我在窗戶上做的方式,對Windows來說,這是完美的。 我希望通過控件來做同樣的事情。

   Dim strWindowToLookFor As String = GetType(MainWindow).Name

            Dim win = ( _
                  From w In Application.Current.Windows _
                  Where DirectCast(w, Window).GetType.Name = strWindowToLookFor _
                  Select w _
               ).FirstOrDefault
            If win IsNot Nothing Then
                DirectCast(win, MainWindow).Title = SelectedContainer
            End If

您可以像這樣關閉窗口事件: this.Closed += MyWindow_Closed; 然后在相應的方法中設置變量。

private void MyWindow_Closed()
{
    TextBox1.Text = a;
}

您可以使用Prism.Events中可用的PubSubEvent。 這將允許您訂閱事件。

    Using Prism.Events;

定義您的事件。

   public class MyEvents : PubSubEvent<object>
   {
     public MyEvents();
   } 

在第一個窗口或后面的代碼中

    [Import]
    public IEventAggregator EventAggregator
    {
        get;
        set;
    }

並且您可以在程序中使用此屬性來發送要發送的任何值。
例如

private void MyWindow_Closed()
{
   MyEvents myEvents = EventAggregator.GetEvent<MyEvents>();
   myEvents.Publish(yourvalue);
}

發布后,您可以像這樣在程序的任何其他部分訂閱同一事件。

  MyEvents myEvents = EventAggregator.GetEvent<MyEvents>();
  myEvents.Subscribe(MyEventMethod, ThreadOption.UIThread, true);

並在這里獲取您的數據

  void MyEventMethod(object obj)
  {
    // do wharever you want
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM