2014-10-24 5 views
-2

Я пытаюсь добавить добавить элементы в списокView из antoher form, но я не знаю, как это сделать. Я попробовал это, но он дает ошибку.C# Добавить listView items из другой формы

Form1

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Local_Host 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      _Form1 = this; 
     } 

     public static Form1 _Form1; 

     public void AddItem(object value) 
     { 
      listView1.Items.Add(value); 
     } 
    } 
} 

Form2

private void button1_Click(object sender, EventArgs e) 
    { 
     Form1._Form1.AddItem(textBox1.Text); //error 

    } 
+4

Какая ошибка в точности? –

+0

@eddie_cat Form1 - это имя класса, и он вызывает статическую переменную _Form1 класса Form1. Лучше подождать объяснения того, что не работает – Steve

+0

У него есть некоторые недопустимые аргументы – user2920845

ответ

1

Погрешность в функции

public void AddItem(object value) 
{ 
    listView1.Items.Add(value); 
} 

вы передать объект в эту функцию и попытаться добавить его в ListViewItemCollection, но нет overload of the Add method из ListViewItemCollection, который принимает объект

Изменить его

public void AddItem(string value) 
{ 
    listView1.Items.Add(value); 
} 

Это решит проблему немедленной компиляции, но вам будет трудно работать с этой статической переменной. Если ваш план должен был передавать значения из формы2 в form1, лучше сохранить созданный экземпляр формы1 и использовать его для передачи значений через метод AddItem, иначе вы закончите добавлять эти значения в другие экземпляры Form1 (последний экземпляр созданный получит новую строку)

+0

Спасибо, что это работает :) – user2920845

+0

Да, которые решают ближайшую проблему , но вам лучше планировать другой метод передачи значений из формы в форму, потому что эта статическая переменная очень опасна – Steve

0

Вместо передать значение текстового поля в Form1 конструкторе как

Form2

private void button1_Click(object sender, EventArgs e) 
{ 
    Form1 frm = new Form1(textBox1.Text); 
    frm.show(); 
} 

Затем в Form1 добавить значение к вашему л istview как

public partial class Form1 : Form 
{ 
    public Form1(string listview_val) 
    { 
     InitializeComponent(); 

     this.listView1.Items.Add(listview_val); 
    } 
} 
+0

Спасибо за ваш ответ :) – user2920845

Смежные вопросы