【问题标题】:How to pass value from one window to another如何将值从一个窗口传递到另一个窗口
【发布时间】:2016-06-08 00:43:37
【问题描述】:

如何在设置变量后将值从一个变量传递到文本框?在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 新手,请见谅。

这就是我为窗口做的方式,这对窗口非常有效。我希望用控件做同样的事情。

   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

【问题讨论】:

  • 我不懂vb所以帮不了你太多,但基本上你可以在你的App对象上定义一个事件。窗口一将订阅事件,窗口二将引发事件,传递所需的值或对象。

标签: wpf vb.net


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多