我正在尝试选择不是控件的内容-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
。