2015-04-06 2 views
0

У меня есть 2 разных формы, в одном я генерирую список клиентов, а в другой мне нужно получить информацию, добавленную в список. Как передать список в свою вторую форму?Как передать список, сгенерированный в одной форме, в другую форму (C#)?

Вот первая форма

List<Customers> new_customer = new List<Customers>(); 

    private void newCustomer_Load(object sender, EventArgs e) 
    { 

    } 

    private void fNameTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void lNameTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void addressTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void phoneNumTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void emailTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void IDTxtBox_TextChanged(object sender, EventArgs e) 
    { 

    } 


    private void addNewCustButton_Click(object sender, EventArgs e) 
    { 

     if (fNameTxtBox.Text != "" && lNameTxtBox.Text != "" && addressTxtBox.Text != "" && phoneNumTxtBox.Text != "" && emailTxtBox.Text != "" && IDTxtBox.Text != "") 
     { 

      new_customer.Add(new Customers { FName = fNameTxtBox.Text, LName = lNameTxtBox.Text, Address = addressTxtBox.Text, phoneNum = phoneNumTxtBox.Text, emailAdd = emailTxtBox.Text, ID = int.Parse(IDTxtBox.Text) }); 
      MessageBox.Show("Thanks for Registering"); 
     } 

     else 
     { 
      MessageBox.Show("Customer not added! Please fill out the entire form!"); 
     } 

    } 

} 

}

А вот вторая форма:

namespace WindowsFormsApplication1 
{ 
public partial class Current_Customers : Form 
{ 
    public Current_Customers() 
    { 
     InitializeComponent(); 

    } 

    private void currCustComboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
    } 
} 
+0

Используя это, вы можете передать значение из одной формы в другую форму. Http://www.codeproject.com/Questions/180489/How-to-copy-all-the-items-between-listboxes-in-two –

ответ

1

Создать новый конструктор form2, как это, а также создать список во второй форме, как Что ж.

public partial class Current_Customers : Form 
{ 
List<Customers> new_customer = new List<Customers>(); 
public Current_Customers(List<Customers> customers) 
{ 
new_customer=customers; 
} 
} 

И когда вы будете создавать объект этого вида в form1 сделать это

Current_Customers cus=new Current_Customers(new_customer); 

Это будет проходить список второй формы.

+0

Hi Майрай, спасибо за ваш ответ. Я попытался реализовать это, однако, когда мне нужно создать экземпляр этой формы при нажатии кнопки в родительской форме, мне нужно будет передать список его конструктору (из-за метода конструктора, который мы ввели в form2). Я попробовал список, и он говорит, что список недоступен в этом контексте. Как я могу это исправить? –

0

У вас есть два возможных способа сделать это.

1) Составьте списки открытых полей/Свойства в обеих формах. Если обе формы существуют в одном и том же объеме, они могут ссылаться друг на друга.

2) Добавить список в третий класс, предпочтительно в статический класс, доступ к которому может получить обе формы. Это было бы моим личным предпочтением.

public static class StaticData 
{ 
    public static readonly List<Customers> _Customers = new List<Customers>(); 

    public static List<Customers> CustomerList 
    { 
     get 
     { 
      if (_Customers.Count < 1) 
      { 
        //Load Customer data 
      } 
      return _Customers; 
     } 
    } 
} 

public class Form1 
{ 
    private List<Customers> new_customer = null; 
    public Form1() 
    { 
     this.new_customer = StaticData.CustomerList; 
    } 
} 

public class Current_Customers 
{ 
    private List<Customers> new_customer = null; 

    public Current_Customers() 
    { 
     this.new_customer = StaticData.CustomerList; 
    } 
} 

Это должно быть, однако, что мой пример здесь на самом деле не поточно и предназначен только направить вас в правильном направлении.

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