2016-01-29 3 views
0

У меня есть 2 формы. Форма 1, которая показывает кнопку ListView и Form 2 a с кнопкой button1. То, что я пытаюсь сделать, - это нажать кнопку на форме 2. Я хочу, чтобы он заполнил Listview в форме1.C# - Fill Listview в другом виде - VS2015

Listview имеет 3 колонки; Flavor Количество Итого

Когда button1 нажата, она должна показать ваниль, 1, £ 1,00 в ListView на Form1.

Я могу сделать это, если listview находится в той же форме, что и кнопка, но не в том случае, если она находится на разных формах.

Form1

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

Form2

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

private void button1_Click(object sender, EventArgs e) 
    { 
     ListViewItem lvi = new ListViewItem("Vanilla"); 
     lvi.SubItems.Add("1"); 
     lvi.SubItems.Add("£1.00"); 
     listView1.Items.Add(lvi); 
    } 
+0

Вы пытались передать ссылку на Form1 в Form2? –

+0

@Sylverac Вы имеете в виду это? Form2 form2 = new Form2(); – AnotherUser

+0

См. [Этот вопрос] (https://stackoverflow.com/questions/10704020/changing-a-labels-text-in-another-form-in-c). Речь идет о этикетках, но она все равно должна указывать вам в правильном направлении. –

ответ

1

Создать ссылку на form1 в form2 вроде этого:

class Program { 
    static void Main() { 
     var form1 = new Form1(); 
     var form2 = new Form2(form1); 
    } 
} 

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

    public void DoStuff(ListViewItem lvi) { 
     // TODO: Stuff 
    } 
} 

public partial class Form2: Form 
{ 
    private Form1 _form1; 

    public form2(Form1 form1) 
    { 
     InitializeComponent(); 
     _form1 = form1; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ListViewItem lvi = new ListViewItem("Vanilla"); 
     lvi.SubItems.Add("1"); 
     lvi.SubItems.Add("£1.00"); 
     listView1.Items.Add(lvi); 

     _form1.DoStuff(lvi); 
    } 
} 
+0

Не может показаться, что это работает – AnotherUser

+0

@ imraanstack1 Вы можете уточнить? В чем проблема? –

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