类型转换-如何在c#中将backbasic转换为控件
本文关键字:backbasic 转换 控件 中将 类型转换 | 更新日期: 2023-09-27 18:02:11
我正试图将backfoundation转换为控件,但它说:
错误6参数1:不能从"System.ComponentModel。BackgroundWorker"System.Windows.Forms.Control"
代码
BackgroundWorker bw = new BackgroundWorker();
this.Controls.Add(bw);
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerAsync();
如何使事情工作?
我试着cast bw来控制,但同样的事情,这就是我尝试的:
this.Controls.Add((this.Control)bw);
欢迎来到SO!
删除这一行
this.Controls.Add(bw);
BackgroundWorker
不是从Control
派生的,所以你不能把它添加到Controls
集合中,但是你不需要这样做。
您不需要添加BackgroundWorker
到您的窗体的控件。
它只是一个独立存在的对象
不确定为什么要将worker对象添加到控件集合中…
要发送电子邮件,你可以简单地传递一个绑定到对象DoWorkEventHandler
的工作方法,看起来你已经完成了一部分:-
BackgroundWorker bw = new BackgroundWorker();
this.Controls.Add(bw); //REMOVE THIS LINE
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
//If your email relies on data from some object you can pass it in as a parameter
bw.RunWorkerAsync([email object])
然后你需要设置一个worker方法来处理电子邮件的发送:-
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
Email email = (Email)sender;
//Send email
}
您可能还想知道当前作业何时完成,在这种情况下,您可以在do work方法中使用如下内容:-
this.Invoke(new JobDone(ReportProgress), result);
委托定义为:
private delegate void JobDone(Result result);
和ReportProgress
方法看起来像:-
private void ReportProgress(Result result)
{
}