2012-11-22 46 views
-2

這裏檢索對象是我的代碼:從一個ArrayList

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文件中的兩個類型對號標記。數組列表包含兩個值。

+0

k;什麼(在那)是'ArrayList'?它是「CreateControls」嗎?與「arraylist中的選中標記進行比較」是什麼意思?什麼是「複選標記」?另外:爲什麼我們在這裏使用'ArrayList'? (因爲你提到WPF,它不可能是1.1) –

+5

如果你不想花時間寫這個問題想象別人想花什麼來回答它... -1 –

+0

@MarcGravell:「CreateControls」是一個ArrayList。而checkmark是一個類對象。我從xml獲取內部值,並將其插入到複選標記中。然後選中標記存儲在一個數組列表中。然後遍歷(在下面的代碼中)。 我想從一個數組列表中獲得複選標記對象值。 – HmXa

回答

1

當您添加FbCheckMark類型的唯一控制,那麼就在foreach語句鑄造(從你的問題我認爲CreateControlsArrayList):

foreach (FbCheckMark fbCheckMark in CreateControls) 
{ 
    // use fbCheckMark 
} 

如果您有其他類型的控件在CreateControls數組列表,然後選擇FbCheckMark類型的唯一控制:

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

另外XML解析是使用LINQ簡單XML:

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

BTW why ArrayList?通用List<FbCheckMark>是一個更好的選擇。

相關問題