0

我的 C# 代码中有一个集合

private ObservableCollection<UserForms> _userForms = 
    new ObservableCollection<UserForms>();

public ObservableCollection<UserForms> UserForms { get { return _userForms; } }

我正在用 4 个值填充集合

foreach (DataRow dr in DataTable.Rows)
{
                    UserForms.Add(new UserForms()
                    {
                        FormID = Convert.ToInt32(dr["FormID"]),
                        FormName = dr["FormName"].ToString(),
                        FromSyName = dr["FormSyName"].ToString(),
                        Visibility = false,
                        RoleAdd=false,
                        RoleEdit=false,
                        RoleDelete=false
                    });
}

我正在填写这个Form_Load()事件

现在我想更新

Visibility = true,
RoleAdd=true,
RoleEdit=true,
RoleDelete=true

在集合中的指定行中。

4

4 回答 4

1

您只需要执行以下操作:

UserForms[0].Visibility = true;

其中“[0]”是索引。

于 2012-10-29T06:49:11.887 回答
0

如果您ObservableCollection是可枚举的(通常是哪些集合),则可以使用 foreach 循环,如下所示:

foreach(UserForms uf in UserForms)
{
    if (uf.FormID > 10)
        uf.Visibility = true;
}

在上面的代码中,我更改了FormID高于 10 的行的可见性。

于 2012-10-29T06:51:45.627 回答
0

看起来您需要过滤掉一些项目,然后更新它们。

foreach(UserForms uf in UserForms.Where(i=>i.FormName == "FormName"/*put your filtering criteria here*/))
{
    uf.Visibility = true;
    // Set all needed properties here
}
于 2012-10-29T06:57:08.250 回答
0

您想访问集合的实例。

_userForms.ToList().ForEach((f) => f.Visibility = true); 

或者如果您知道索引并想要更新单个项目。

 _userForms[index].Visibility = true;

或用于多个过滤器项目

 var filterColl = coll.Where((c)=> c.FormName.StartsWith("A"));
 filterColl.ToList().ForEach((f) => f.Visibility = true); 

希望这可以帮助..

于 2012-10-29T06:57:34.210 回答