我正在尝试选择不是控件的内容-OvalShape。

这可以找到一个按钮

string y = "btn_down_" + x;
Button button = this.Controls.Find(y, true)[0] as Button;


例如,如何做同样的事情来找到OvalShape :(这显然不起作用)

string y = "ovalShape_" + x;
OvalShape light = this.Controls.Find(y, true)[0] as OvalShape;




_____解_____

string z = "ovalShape" + (21-x);
OvalShape light = shapeContainer2.Shapes.OfType<OvalShape>().FirstOrDefault(ov =>    ov.Name == z);

最佳答案

根据@gideon答案中提供的一些链接,您可以通过以下方式尝试:

首先获取默认的ShapeContainer,然后在容器内搜索类型为OvalShape并且名称等于y的形状。

string y = "ovalShape_" + x;
var shapeContainer = this.Controls.OfType<ShapeContainer>().FirstOrDefault();
OvalShape light = shapeContainer.Shapes.OfType<OvalShape>().FirstOrDefault(o => o.Name == y);


这段代码对我来说很好用,但是将OvalShape拖到Form上后生成的名称类似于"ovalShape" + x而不是"ovalShape_" + x

09-25 21:53