Могу ли я добавить в CheckListBox имя + дату? (C #) - PullRequest
1 голос
/ 17 апреля 2011

хорошо, последняя попытка :) у меня есть небольшая форма, которую пользователь должен заполнить (имя, дата и т. д.), когда он нажимает «отправить» я хочу, чтобы его имя вместе с датой (пользователь вводит дату в формате DateTimePicker) будет отображаться в CheckedListBox как 1 элемент (пример = "gil 17/12/2011") это вообще возможно?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Конечно, вы можете. Хитрость заключается в том, чтобы знать, что ListBox (и CheckedListBox) содержат список Object s. Для отображения используется метод ToString этих объектов. Все, что вам нужно сделать, это заполнить список вашим собственным типом с переопределением ToString.

using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    public Form1()
    {
        Controls.Add(new Label { Text = "Name", Location = new Point(10, 10), AutoSize = true });
        Controls.Add(new TextBox { Name = "Name", Location = new Point(60, 10) });
        Controls.Add(new Label { Text = "Date", Location = new Point(10, 40), AutoSize = true });
        Controls.Add(new DateTimePicker { Name = "Date", Location = new Point(60, 40) });
        Controls.Add(new Button { Name = "Submit", Text = "Submit", Location = new Point(10, 70) });
        Controls.Add(new CheckedListBox { Name = "List", Location = new Point(10, 100), Size = new Size(ClientSize.Width - 20, ClientSize.Height - 100 - 10) });
        Controls["Submit"].Click += (s, e) =>
                (Controls["List"] as CheckedListBox).Items.Add(new MyItem { Name = Controls["Name"].Text, Date = (Controls["Date"] as DateTimePicker).Value });
    }
}

public class MyItem
{
    public string Name { get; set; }
    public DateTime Date { get; set; }

    public override string ToString()
    {
        return String.Format("{0} {1}", Name, Date);
    }
}
0 голосов
/ 17 апреля 2011

Без особых усилий, нет, это невозможно, но вы можете реализовать это самостоятельно. Взгляните на Редактируемый ListView и Редактирование подэлементов ListView на месте .

...