foreach (Control c in this.Controls)
{
if (c is Button)
{
Button b = (Button)c;
if (b.Tag.Equals("submit") && b.Tag.Equals("save"))
{
b.Visible = false;
}
}
}
我试图隐藏这些标签属性按钮其他将在表单加载显示这里是我的代码它无法正常工作。但是错误显示“对象引用未设置............”
答案 0 :(得分:6)
问题1:您是否真的将Tag
设置为任何内容?
问题2:为什么使用Tag
而不是按钮实例本身?
问题3:Tag
如何同时是一个值和另一个值?
关于问题2):你可以这样做
if (c == btnSubmit) { ... }
if (c == btnSave) { ... }
假设您在属性中命名了两个按钮。 这也是我推荐的解决方案!
关于问题3):你的代码应该(可能)读取
if (b.Tag.ToString().Equals("submit") || b.Tag.ToString().Equals("save"))
{
b.Visible = false;
}
我只是觉得你的整个代码可以重构为以下内容,假设按钮的名称是相应的:
btnSubmit.Visible = false;
btnSave.Visible = false;
没有循环,没有任何东西!默认情况下,表单上的每个控件都在类中有一个实例成员(除非您在控件的属性中另外配置它)。那么为什么你会循环遍历表单上的所有控件(顺便说一下,如果按钮在Panel
内部,它甚至都不起作用)只是为了找到你想要隐藏的两个按钮,你可以“调用它们”以他们的名字“首先?”