Jak stworzyć listę w C# w WindowsForms zawierającą własne kontrolki (UserControl)

0

Witam,
mam do zrobienia listę, które będzie zawierała własne kontrolki, mam na myśli UserControl's.
Przygotowałem sobie element UserControl:

 public partial class importRow : UserControl
{
    public importRow()
    {
        InitializeComponent();
        this.importNameLabel.Text = "Import danych z pliku:";
    }

    public bool Checked { get; set; }

    public int margin { get; set; } = 0;

    public string fileLink
    {
        get
        {
            return fileLink;
        }
        set
        {
            fileLink = value;
            this.linkTextBox.Text = fileLink;
        }
    }

    public string fileType
    {
        get
        {
            return fileType;
        }
        set
        {
            var link = value.Split('.');
            fileType = link[link.Length-1];
        }
    }

    private void SelectFileButton_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();

        openFileDialog.InitialDirectory = "c:\\";
        openFileDialog.Filter = "csv files (*.csv)|*.csv|Excel file (*.xlsx)|*.xlsx";
        openFileDialog.FilterIndex = 2;
        openFileDialog.RestoreDirectory = true;

        if(openFileDialog.ShowDialog() == DialogResult.OK)
        {
            fileLink = openFileDialog.FileName;
            fileType = fileLink;
        }
    }
}

Przygotowałem także formatkę z `ListView':

    public partial class ImportManager : Form
{
    public ImportManager()
    {
        InitializeComponent();
    }


    private void AddRowButton_Click(object sender, EventArgs e)
    {
        this.listView1.Controls.Add(new importRow());
        this.listView1.Refresh();

    }
}

Niestety po uruchomieniu programu i wciśnięciu przycisku dodania wiersza pojawia się tylko jeden wiersz z UserControl, natomiast po ponownym naciśnięciu nic się nie dzieje, jest tylko ten jeden. Jak zrobić, żeby po naciśnięciu przycisku dodawały się nowe wiersze z 'UserControl'

0

ListView przyjmuje swoje element w Items, a nie w Controls

listView1.Items.Add("ITEM");

Jeśli chcesz mieć UserControl w ListView to musisz ręcznie liczyć ich pozycje

importRow i = new importRow();
i.Location = new Point(0, 0);

listView1.Controls.Add(i);
listView1.Refresh();

importRow i2 = new importRow();
i2.Location = new Point(100, 200);

listView1.Controls.Add(i2);
listView1.Refresh();

1 użytkowników online, w tym zalogowanych: 0, gości: 1