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

いくつかのアイテムを除外してから更新する必要があるようです。

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 に答える
0

あなたObservableCollectionが列挙可能な場合(通常はコレクションです)、次のように foreach ループを使用できます。

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

上記のコードではFormID、10 を超える行の可視性を変更しています。

于 2012-10-29T06:51:45.627 に答える