在userControl这个控件里面调用之前在winform里面的代码,这是代码
private void button11_Click(object sender, EventArgs e)
{
RectLatLng area = MainMap.SelectedArea;
if (!area.IsEmpty)
{
for (int i = (int)MainMap.Zoom; i <= MainMap.MaxZoom; i++)
{
DialogResult res = MessageBox.Show("Ready ripp at Zoom = " + i + " ?", "GMap.NET", MessageBoxButtons.YesNoCancel);
if (res == DialogResult.Yes)
{
using (TilePrefetcher obj = new TilePrefetcher())
{
obj.Owner = this;this表示要转换为UserControl1,无法隐式转化
obj.ShowCompleteMessage = true;
obj.Start(area, i, MainMap.MapProvider, 100);
}
}
else if (res == DialogResult.No)
{
continue;
}
else if (res == DialogResult.Cancel)
{
break;
}
}
}
else
{
MessageBox.Show("Select map area holding ALT", "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
求解
报错是类型不一致,Form才可以是Owner。你应该把this,修改为具体的Form。
这个obj.Owner应该是usercontrol类型的吧?usercontrol有没有继承Form类,或者Form类的子父类呢?如果没有的话,理论上确实无法转型,类型不匹配。
obj.Owner是Form类型,两个没有继承关系