[英]How to keep a hidden window alive in background in wpf?
当窗口隐藏时如何保持活动状态,我正在尝试此代码..
Win1:包含当前时间和日期。 ON按钮单击win2窗口将打开,并且win1隐藏。
Win2:在win2窗口中,我已使用属性传递了win1文本框的值。
但是在win2中,时间没有更新..这意味着win1不再存在
有什么建议么?
{
public win1()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer(new TimeSpan(0,0,1), DispatcherPriority.Normal, delegate
{
this.textb.Text = DateTime.Now.ToString("HH:mm:ss tt");
}, this.Dispatcher);
}
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
}
private void but_send_Click(object sender, RoutedEventArgs e)
{
win2 w2 = new win2();
w2.passval = textb.Text;
this.Hide();
w2.ShowDialog();
}
}
这是我的第二个窗口win2.xaml.cs
{
private string nm;
public string passval
{
get { return nm; }
set { nm = value;}
}
public win2()
{
InitializeComponent();
}
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
lbl1.Content = "Time " + nm;
}
}
问题是您正在更新Win1的TextBox
。 下一行将位于textb.Text
的字符串textb.Text
到w2.passval
:
w2.passval = textb.Text;
就是这样:进一步更新textb.Text
对w2.passval
属性没有影响。
此外,保持一个参考w2
在Win1
,直接更新w2.passval
从您的委托,也将不会因为被加载网格时你只更新其值更新LBL1的内容。 因此,您需要:
更新w2.passval
从委托Win1
。 例如:
public win1() { InitializeComponent(); DispatcherTimer timer = new DispatcherTimer(new TimeSpan(0,0,1), DispatcherPriority.Normal, delegate { this.textb.Text = DateTime.Now.ToString("HH:mm:ss tt"); if (_w2 != null) _w2.passval = textb.Text; }, this.Dispatcher); } private win2 _w2 = null; // Reference to your Win2 private void but_send_Click(object sender, RoutedEventArgs e) { _w2 = new win2(); _w2.passval = textb.Text; this.Hide(); w2.ShowDialog(); }
在Win2
更新Label
。 例如:
private string nm; public string passval { get { return nm; } set { nm = value; // This should rather be done somewhere else, not in the setter lbl1.Content = "Time " + nm; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.