C# 从arraylist检索对象

C# 从arraylist检索对象,c#,wpf,xml,C#,Wpf,Xml,这是我的密码: foreach (XmlNode node in DOC.SelectNodes("//CheckMarkObject")) { checkmark = new FbCheckMark(); checkmark.Name = node.SelectSingleNode("Name").InnerText; checkmark.Label = node.SelectSingleNode("Label").InnerT

这是我的密码:

    foreach (XmlNode node in DOC.SelectNodes("//CheckMarkObject"))
    {
        checkmark = new FbCheckMark();

        checkmark.Name = node.SelectSingleNode("Name").InnerText;
        checkmark.Label = node.SelectSingleNode("Label").InnerText;

        if (node.SelectSingleNode("IsChecked").InnerText == "0")
        {
            checkmark.IsChecked = false;
        }
        else
        {
            checkmark.IsChecked = true;
        }

        CreateControls.Add(checkmark);
    }
在此之后:

    foreach (Object obj in CreateControls)
    {
        if (..???) //want to compare with the checkmark in arraylist 
        {
            CheckBox cb = new CheckBox();
            TextBlock cbtextblock = new TextBlock();

            cbtextblock.Text = checkmark.Label;
            cbtextblock.Height = 27;
            cbtextblock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            cbtextblock.Margin = new Thickness(12, 20, 0, 0);
            cbtextblock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            cb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            cb.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            cb.Margin = new Thickness(150, 21, 0, 0);
            cb.Height = 50;
            cb.Width = 100;
            cb.Name = checkmark.Name;
            // cb.Content = checkmark.Label;
            LayoutRoot.Children.Add(cbtextblock);
            LayoutRoot.Children.Add(cb);
        }
    }

在我的XML文件中有两种类型的复选标记标记。数组列表包含这两个值。

当您仅添加
FbCheckMark
类型的控件时,请执行foreach语句中的强制转换(根据您的问题,我假设
CreateControls
ArrayList
):

如果在
CreateControls
数组列表中有其他类型的控件,则仅选择FbCheckMark类型的控件:

foreach (var fbCheckMark in CreateControls.OfType<FbCheckMark>())
{
    // use fbCheckMark
}

顺便问一下,为什么是ArrayList?通用
List
是一个更好的选择。

k;
数组列表是什么?是不是
CreateControls
?“与arraylist中的复选标记进行比较”是什么意思?什么是“对勾”?另外:为什么我们在这里使用
ArrayList
?(既然你提到了WPF,它不可能是1.1)如果你不想花必要的时间写这个问题,想象一下其他人想花多少时间来回答它-1@MarcGravell:“CreateControls”是一个ArrayList。checkmark是一个类对象,我从xml中获取内部值并将其插入checkmark中。然后选中标记存储在arraylist中。然后遍历(在下面的代码中)。我想从arraylist中获取选中标记对象值。
foreach (var fbCheckMark in CreateControls.OfType<FbCheckMark>())
{
    // use fbCheckMark
}
xdoc.Descendatns("CheckMarkObject")
    .Select(node => new FbCheckMark() 
            { 
                Name = (string)node.Element("Name"),
                Lablel = (string)node.Element("Label"),
                IsChecked = (string)node.Element("IsChecked") != "0"
            })
    .ToList()
    .ForEach(checkmark => CreateControls.Add(checkmark));