如果ListView,则隐藏按钮.文本为空



我的程序是一个windows窗体应用程序。我的表单中有多个按钮和一个ListView控件。ListView1.Text中显示不同信息的每个按钮,并非所有用户都可以查看与其角色相关的所有信息。例如,如果用户是学生,他只能看到来自Btn1.TextBtn2.TextBtn5.Text的信息,而其余按钮将在ListView1.Text内显示为空。因此,我希望那些在ListView中不显示任何信息的按钮变成不可见的。我该怎么做?非常感谢。

在这种情况下,我将创建一个实现INotifyPropertyChanged的类,以包含各种控件的state,例如它们的可见性,然后我将使用简单的Windows窗体数据绑定将窗体控件的Visibility属性绑定到此"UIStatus"对象中的值上。

将UI状态集中到一个对象中是一个很好的范例,它实际上非常接近MVVM。当用户与表单交互时,UIStatus会更新,Windows窗体绑定机制将负责设置控件的可见性,甚至启用性。

使用这种方法可以避免必须在窗体上的Controls集合中循环,并在该循环中执行所有类型的逻辑,这些逻辑必须绑定到计时器或其他东西才能周期性地触发它。

我发现,将UIStatus对象的属性设置为用户交互的一部分要好得多,因为Windows窗体数据绑定将在"后台"进行。

干杯

foreach (Control control in this.Controls)
{
     if (control is Button)
     {
          if (string.IsNullOrEmpty(((Button)control).Text))
          {
                ((Button)controls).Visible = false;
          }
     }
}

edit:用Control 替换var

最新更新