如何将值从一个窗口传递到另一个窗口

时间:2016-06-06 21:40:28

标签: wpf vb.net

如何在设置后将值从一个变量传递到文本框?在winforms上,我曾经在winforms中使用form1.textbox1.text = variable。

我设置,并从此获取变量...

 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的新手,请原谅noobness。

这就是我为一个窗口所做的,这对于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

2 个答案:

答案 0 :(得分:0)

你可以使一个Window关闭事件,如: this.Closed += MyWindow_Closed; 然后在相应的方法中设置变量。

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

答案 1 :(得分:0)

您可以使用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
  }