从列表中编辑特定项目

时间:2014-04-14 11:05:04

标签: c# winforms

我想问一下如何编辑集合中的项目。例如:在集合myList I(字符串名称,DateTime事件)中。我想把活动搬到明年。

我试过了:

 public class ClassEvent
    {
        public string Name { get; set; }

        public DateTime Date { get; set; }

 public ClassEvent(string name, DateTime date)
        {

            Name = name;
            Date = date;
        }

MYCLASS:

public List<ClassEvent> event= new List<ClassEvent>();
public void AddEvent(string name, DateTime MyEvent)
        {
            ClassEvent  ev = new ClassEvent(name, MyEvent.Date);
            event.Add(ev);
        }

的MainForm:

forach( var a in MyClass.event)
{
   if(a.MyEvent == DateTime.Today)
      {
           Myclass.AddEvent(a.name, a.MyEvent.AddYears(1);
}

但它不起作用。

2 个答案:

答案 0 :(得分:1)

您正在foreach循环中创建一个新的ClassEvent,而不是编辑您正在使用的那个。我会尝试:

forach( var a in MyClass.event)
{
  if(a.MyEvent == DateTime.Today)
   {
     a.MyEvent.AddYears(1);
   }
}

答案 1 :(得分:0)

您无法在 foreach 循环中修改集合。使用 for loop isntead:

添加 新项目添加到集合中:

  // Pay attention: backward loop
  for(int i = MyClass.event.Count - 1; i >= 0; --i) {
    ClassEvent a = MyClass.event[i];

    if (a.MyEvent == DateTime.Today)
      Myclass.AddEvent(a.name, a.MyEvent.AddYears(1);
  }

更改 集合中的现有项目:

  // Any direction forward/backward will do
  for(int i = MyClass.event.Count - 1; i >= 0; --i) {
    ClassEvent a = MyClass.event[i];

    // Just change "a", since "a" is a item in the collection already
    //TODO: Check the syntax; "MyEvent" is expected being a writeable property 
    if (a.MyEvent == DateTime.Today)  
      a.MyEvent = a.MyEvent.AddYears(1);
  }