同样,我正在根据这篇文章动态创建按钮,现在我需要相应地隐藏它。如何找到和隐藏按钮。这对我来说是新的,因为我习惯于拖放并用它做事。任何帮助,将不胜感激。先谢谢了。
问问题
2331 次
6 回答
2
使用我上一个问题中的示例,我添加了一个“名称”属性:
int lastX = 0;
for (int i = 0; i < 4; i++) {
Button b = new Button();
b.Name = "button" + i.ToString();
b.Location = new Point(lastX, 0);
this.Controls.Add(b);
lastX += b.Width;
}
现在您可以按名称访问它:
if (this.Controls.ContainsKey("button1"))
this.Controls["button1"].Visible = false;
于 2012-06-20T18:31:34.613 回答
1
var button = (from b in this.Controls.OfType<Button>()
where b.Name == nameOfButton).First();
button.Hide();
于 2012-06-20T18:31:04.557 回答
0
您必须知道您的控件的名称。然后使用这个:
foreach(Control control in Controls){
if (control.Name == "your control name"){
control.Visible = false;
}
}
例如,如果您的控件位于名为 mypanel 的面板中,则必须编写foreach(Control control in mypanel.Controls)
Hope it help
于 2012-06-20T18:30:34.413 回答
0
如果您将动态创建的控件保存在 中Dictionary<string, ControlType>
,您可以非常轻松有效地找到它们。当然,关键是您的控件名称。
于 2012-06-20T18:31:03.073 回答
0
如果您的表单包含面板等容器,您应该进行递归搜索:
void SetVisible(Control c)
{
if (control.Name == "your control name")
control.Visible = false;
foreach(Control control in c.Controls){
SetVisible(control);
}
}
然后在某处打电话:
SetVisible(this);
于 2012-06-21T07:48:24.620 回答
0
非常老的问题,但接受的答案对我不起作用,因为我的控件是嵌套的(另一个控件的子级)。
Controls.Find 方法对我有用,它为第二个参数传入“true”,告诉它搜索子项:
Control c = panelControls.Controls.Find("MyControlName", true).FirstOrDefault();
if (c != null && c is ComboBox) {
ComboBox cmb = (ComboBox)c;
cmb.Hide();
}
文档: https ://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.controlcollection.find
于 2021-04-23T20:31:20.330 回答