webmail123 Ответов: 1

Добавление элементов в listview из другой формы


Я работаю в .Net Framework Compact Edition для разработки приложения pocket pc. У меня есть 2 формы с именем frmData, frmMain. У меня есть представление списка в frmMain. В представлении списка у меня есть 4 столбца. Удостоверение личности, номер, место, время. Я получаю значение ID, комнаты, местоположения и времени на frmData. Я хочу получить эти данные и поместить их в listview frmMain. В frmData может быть более 1 записи, которые будут сохранены в списке. Когда я нажимаю на btnUpdate на frmData, frmData закрывается, а frmMain активируется.

Что я уже пробовал:

Этот код предназначен для frmData
public static ListViewItem item = new ListViewItem();

private void btnSave_Click(object sender, EventArgs e)
{
    DateTime dt = DateTime.Now.ToUniversalTime();
    string format = dt.ToString("yyyy-MM-dd HH:mm:ss");
    string[] row = { txtEPC.Text, cmbRoom.Text, txtShelf.Text, format };
    
    item.Text = txtEPC.Text;
    item.SubItems.Add(cmbRoom.Text);
    item.SubItems.Add(txtShelf.Text);
    item.SubItems.Add(format);
}

private void btnUpdateMain_Click(object sender, EventArgs e)
{
    this.close();
}


Этот код предназначен для frmMain

private void frmMain_Activated(object sender, EventArgs e)
{
    try
    {
        listView1.Items.Clear();
        listView1.Items.Add(frmData.item);
    }
    catch (Exception)
    {
                    
    }   
}




Я тоже пробовал с этим
frmMain objform1= new frmMain();
private void btnSave_Click(object sender, EventArgs e)
{
    DateTime dt = DateTime.Now.ToUniversalTime();
    string format = dt.ToString("yyyy-MM-dd HH:mm:ss");
    string[] row = { txtEPC.Text, cmbRoom.Text, txtShelf.Text, format };
    listViewItem lst = new ListViewItem;
    objform1.listview1.Items.add(lst); //changed modifier of listview1 to public
    
    item.Text = txtEPC.Text;
    item.SubItems.Add(cmbRoom.Text);
    item.SubItems.Add(txtShelf.Text);
    item.SubItems.Add(format);
}

1 Ответов

Рейтинг:
2

Bryian Tan

Основываясь на том, что здесь представлено, я думаю, что это то, что вы ищете. На кнопке Обновить нажмите кнопку закрыть frmData, показать frmMain и заполнить ListView элементом из frmData

private void btnUpdateMain_Click(object sender, EventArgs e)
{
    this.Hide();
    frmMain frm2 = new frmMain();
    frm2.Closed += (s, args) => this.Close();
    frm2.Show();
}


или
private void btnUpdateMain_Click(object sender, EventArgs e)
{
     this.Hide();
    frmMain frm2 = new frmMain();
    frm2.ShowDialog();
    this.Close();
}



Источник: winforms - c# откройте новую форму, а затем закройте текущую форму? - переполнение стека[^]