C # Создание нового экземпляра класса из другой формы - PullRequest
0 голосов
/ 05 июля 2018

Я совершенно новичок в объектно-ориентированном программировании на C #, и мне было интересно, как лучше всего использовать 2-ю форму для ввода деталей, которые используются для создания нового экземпляра объекта, существующего в первой форме.
Должен ли я просто передать переменные обратно в форму и создать новый экземпляр в новой форме. Просто интересно, как лучше ...

Базовый код для формы 1

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

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.ShowDialog();
    }
}

class person
{
    public string Name { get; set; }
    public int age { get; set; }
}

Базовый код для формы 2

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

    private void button1_Click(object sender, EventArgs e)
    {
        // How do I create a new instance of person using these variables
        string name = "Neil";
        int age = 42;
        this.Close();
    }
}

Любая помощь очень ценится

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете создать объект в Form2 и получить его в Form1 следующим образом:

    public partial class Form1 : Form
    {            

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            if (frm2.ShowDialog() == DialogResult.OK)
            {
                var p = frm2.Person;
            }
        }
   }


   public partial class Form2 : Form
   {
        public person Person { get; set; }            

        private void button1_Click(object sender, EventArgs e)
        {
            this.Person = new Person();
            //set properties in Person object
        }
    }

Или, если вы хотите передать объект из формы Form1 в форму Form2, обновить его в форме Form2 и повторно использовать Form1, вы можете сделать это следующим образом:

public partial class Form1 : Form
{
    private void button1_Form1_Click(object sender, EventArgs e)
    {
        var p = new Person();
        Form2 frm2 = new Form2(p);
        if (frm2.ShowDialog() == DialogResult.OK)
        {
            var updatedPerson = frm2.Person;
        }
    }
}

public partial class Form2 : Form
{
    public person Person { get; set; }
    public Form2(Person p)
    {
        this.Person = p;
        InitializeComponent();
    }
    private void button1_Form2_Click(object sender, EventArgs e)
    {
        //set properties of this.Person
    }
}
0 голосов
/ 05 июля 2018

В классе Form2,

Сначала включите пространство имен, в котором присутствует класс Person Затем, используя ключевое слово new, вы можете создать экземпляр класса персонажа

Person personObj = new Person();

Если вы хотите присвоить значения свойствам, представленным в классе Person,

Person personObj = new Person()
{
    Name = "Nail",
    Age = 23
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...