我的程序是一个Windows窗体应用程序。我的表单中有多个按钮和一个ListView控件。每个按钮在ListView1.Text
内显示不同的信息,而不是所有用户都可以查看所有信息,参考他们的角色。例如,如果用户是学生,则他只能看到来自Btn1.Text
,Btn2.Text
,Btn5.Text
的信息,其余按钮将在ListView1.Text
内显示为空。所以我希望那些不在ListView中显示任何信息的按钮变为不可见。我该怎么办?谢谢。
答案 0 :(得分:1)
在这种情况下,我将创建一个实现INotifyPropertyChanged
的类,以包含各种控件的state
,例如它们的可见性,然后我将使用简单的Windows窗体数据绑定来绑定表单的Visibility
属性控制此“UIStatus”对象中的值。
将UI状态集中到一个对象中是一个很好的范例,它实际上非常接近MVVM。当您的用户与表单交互时,UIStatus会更新,Windows窗体绑定机制将负责设置可见性,甚至是控件的可用性。
使用这种方法可以防止必须遍历Form上的Controls集合并在此循环中执行所有类型的逻辑,这有意义,必须与定时器绑定,或者定期触发它。
我发现将此UIStatus对象的属性设置为用户交互的一部分要好得多,因为Windows窗体数据绑定将在“引擎盖下”发生。
干杯
答案 1 :(得分:0)
foreach (Control control in this.Controls)
{
if (control is Button)
{
if (string.IsNullOrEmpty(((Button)control).Text))
{
((Button)controls).Visible = false;
}
}
}
编辑:用控件替换var