【发布时间】:2014-09-09 16:31:44
【问题描述】:
我正面临这个问题:我有两个窗口(主窗口和自定义消息)。在我的代码中,我需要使用后台工作人员。在 Dowork 方法中,我想打开与主窗口具有相同大小(宽度/高度)的第二个窗口(自定义消息)。由于我不知道主窗口的大小,我需要使第二个窗口归第一个窗口所有。 这是我的代码:
private void Starter_Click(object sender, RoutedEventArgs e)
{
string linkaddress = Address.Text;
BackgroundWorker CheckValidAddressBW = new BackgroundWorker();
CheckValidAddressBW.DoWork += CheckValidAddressBWDoWork;
CheckValidAddressBW.RunWorkerCompleted += CheckValidAddressBWComplete;
CheckValidAddressBW.RunWorkerAsync(linkaddress);
}
static void CheckValidAddressBWDoWork(object sender, DoWorkEventArgs e)
{
string bandaddress =""+ e.Argument;
bool isValid = false;
/* STUFF INSIDE */
e.Result = isValid;
}
static void CheckValidAddressBWComplete(object sender, RunWorkerCompletedEventArgs e)
{
bool result =(bool) e.Result;
if(result==false)
{
CustomMessage cm = new CustomMessage ();
cm.Width = 800;
cm.Height = 600;
cm.Show();
}
}
所以在这段代码中我想做的是这样的:
if(result==false)
{
CustomMessage cm = new CustomMessage {Owner=this}; //WHERE this means the mainwindow
cm.Width = this.ActualWidth;
cm.Height = this.ActualHeight;
cm.Show();
}
因为我使用的是后台工作人员,所以我不能使用“this”这个词。所以我想知道是否有办法做到这一点。 提前谢谢你。
注意我希望我的问题很清楚:)
【问题讨论】:
-
我不确定你想做什么,但如果你从这两种方法中删除“静态”,你将能够使用“this”
-
感谢您的回答。这正是我一直在寻找的 :) 当我使用 bacgroundworkers 时,我经常使用静态,所以我没有意识到它会产生问题 :)
-
您使用哪个版本的 .NET 框架?
-
其实我用的是 NET 4,5
标签: c# wpf backgroundworker