繁体   English   中英

C#错误:无法将类型'string'隐式转换为'System.Windows.Forms.Control'(CS0029)

[英]c# Error: Cannot implicitly convert type 'string' to 'System.Windows.Forms.Control' (CS0029)

我目前正在编写一个程序,允许用户彼此查看多个透明图像,他们能够打开或关闭6个不同的图像。

要解释它是如何工作的:

图像1始终是背景(除非将其关闭,在这种情况下,下一个“打开”图像是背景)

例如:

  • 如果图像1为开,图像2为开,则图像2将图像1作为其父对象。

  • 如果图像1打开,图像2关闭,图像3打开,则图像3将使用图像1作为其父级

等等

为此,我创建了一个数组-imageName [6]。 打开图像时,相应的元素(例如,图像1 = imageName [0])表示[image1]。

我希望使用这种方法来创建一个控件,该控件可以根据上述示例更改图像的“父级”。

我认为使用以下代码将起作用:

imageB.parent = imageName[0]

//这只是一个示例,所需答案将是imageB.parent = imageA //我需要使用数组中的数据来实现此答案。

但是我只收到标题中列出的错误消息:

(无法将类型'string'隐式转换为'System.Windows.Forms.Control'(CS0029))

有人可以帮我解决这个问题吗? 我怕我陷入困境。

请注意,我的代码要复杂得多,上面仅显示了其中的一小段代码,而不是显示我的代码xD的全部776行

更新:总而言之,我需要根据存储在我的数组一部分中的名称分配一个图像父对象(在本例中为[0]即[image1]

我的错误使这不可能

有没有办法解决这个问题,或者我只是编写非常糟糕的代码?

您有一个字符串,即factionLayersID[0] ,并试图将其factionLayersID[0]Control变量。这就是为什么要获取该异常的原因。

您的数组元素类型应为Control 像这样:

Control[] factionLayers = new Control[6];

然后,您可以将元素分配给父控件:

imageB.parent = factionLayers[0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM