Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ListBox存储多个数据段_C#_Winforms_Listbox - Fatal编程技术网

C# 使用ListBox存储多个数据段

C# 使用ListBox存储多个数据段,c#,winforms,listbox,C#,Winforms,Listbox,我正在用windows窗体为我的一个大学作业制作一个待办事项列表程序。我已经学会了如何在列表框中添加和删除项目,因此我了解它的基本原理,但我想做的是能够在列表框中添加一个任务,如:“为晚餐获取食物”,然后将其添加到列表框中,但我想能够单击“为晚餐获取食物”,然后添加另一个列表框以添加诸如“面包卷”和“培根”之类的内容在将链接到上一个项目的下一个视图中。 真的很像树视图结构,但我希望它更面向菜单。 我该怎么做,我应该查什么 旁注:请随意更正我的标题,如果它不能很好地描述我正在做的事情,我认为它比“

我正在用windows窗体为我的一个大学作业制作一个待办事项列表程序。我已经学会了如何在列表框中添加和删除项目,因此我了解它的基本原理,但我想做的是能够在列表框中添加一个任务,如:“为晚餐获取食物”,然后将其添加到列表框中,但我想能够单击“为晚餐获取食物”,然后添加另一个列表框以添加诸如“面包卷”和“培根”之类的内容在将链接到上一个项目的下一个视图中。 真的很像树视图结构,但我希望它更面向菜单。 我该怎么做,我应该查什么


旁注:请随意更正我的标题,如果它不能很好地描述我正在做的事情,我认为它比“使用列表框”更好。

列表框项目不必是字符串,它们可以是任何可以通过ToString表示为字符串的对象

例如:

public class ToDoItem
{

   public ToDoItem(string w)
   {
       What = s;
   }

   public override string ToString()
   {
       return What;
   }

   public string What
   {
        get;
        set;
   }

}

myListBox.Items.Add(new ToDoItem("Feed Budgie"));

ToDoItem item = (ToDoItem)myListBox.Items[0];
进一步说,您可以:

public class ToDoItem
{
    ...
    public ToDoItem[] Children
    {
       get;
       set;
    }
    ...
}
非常粗糙,但我希望你明白我的意思。

Description
  • 为待办事项列表条目创建基类
  • 重写
    ToString()
    方法
  • 用类的列表填充列表框 如果用户单击某个项目,则可以抓取所选项目,将其强制转换到类中,并使用属性执行某些操作

    样品 在用户单击某个项目后执行操作

    private void myListBox_Click(object sender, EventArgs e)
    {
        if (myListBox.SelectedItem == null)
            return;
    
        // get selected TodoList Entrie
        MyTodoListEntry selectedEntry = (MyTodoListEntry)myListBox.SelectedItem;
        // do something, for example populate another ListBox with selectedEntry
        myInformationsListBox.Items.Clear();
        myInformationsListBox.Items.AddRange(selectedEntry.Information.ToArray());
    }
    
    截图

    很乐意帮忙!祝您有个美好的一天!
    MyTodoListEntry entry = new MyTodoListEntry();
    entry.Title = "get food for dinner";
    entry.Information.Add("bread rolls");
    entry.Information.Add("bacond");
    entry.DueDate = new DateTime(2012,12,12);
    myListBox.Items.Add(entry);
    
    private void myListBox_Click(object sender, EventArgs e)
    {
        if (myListBox.SelectedItem == null)
            return;
    
        // get selected TodoList Entrie
        MyTodoListEntry selectedEntry = (MyTodoListEntry)myListBox.SelectedItem;
        // do something, for example populate another ListBox with selectedEntry
        myInformationsListBox.Items.Clear();
        myInformationsListBox.Items.AddRange(selectedEntry.Information.ToArray());
    }