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));