C # Windows Form Initialize - PullRequest
       1

C # Windows Form Initialize

0 голосов
/ 17 ноября 2018

У меня есть приложение Windows Form с 2 формами, и мне нужно нажать кнопку в форме 1, чтобы перейти к форме 2 (это уже сделано), тогда форма 2 сможет создать объект, используя метод add customer для добавить в систему. Мой вопрос: 1) если я создаю объект в форме 2, как другие формы (form3, form4 и т. Д.) Могут иметь доступ к этому объекту? Насколько я узнал, я могу вызывать метод только через объект. 2) если я создал объект в Form1 и другие формы, унаследованные от формы 1, будет ли этот объект работать в других формах? 3) Объекты могут быть унаследованы или нет? это хорошая практика в реальном мире? 4) Как разрешить разные формы, используя один объект другим методом?

Form1

Form2

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Статическое поле или свойство, предложенное в ответе zdimension, конечно, возможно, но это не должно быть вашим первым вариантом.Существует множество способов передачи данных между формами, и от вашего приложения зависит, какой из них лучше.Например, один из способов сделать это:

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

    public AirlineCoordinator Coordinator {get; set;}

    ...
}

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

    public AirlineCoordinator Coordinator {get; set;}

    private void Form1_Load(object sender, EventArgs e)
    {
        this.Coordinator = new AirlineCoordinator(...);

       ...
    }

    ...

    private void ShowForm2Button_Click(object sender, EventArgs e)
    {
        using(var form2 = new Form2())
        {
            form2.Coordinator = this.Coordinator;
            form2.ShowDialog(this);
        }
    }

}

В этом гипотетическом примере Form1 имеет кнопку ShowForm2Button;нажатие на эту кнопку показывает Form2, используя тот же AirlineCoordinator, который используется Form1.

0 голосов
/ 17 ноября 2018

Обычный способ сделать что-то доступным для всех - это использовать статическое поле, например:

public class GlobalStuff
{
    public static MyType SomeVariable;
}

Здесь GlobalStuff, очевидно, когда-либо содержит только глобальные вещи, так что вы можете рассмотретьсделать его статичным, чтобы указать, что он никогда не будет создан.

Вот что MSDN говорит об этом:

Использование статического класса в качестве единицы организации для методов, не связанных с конкретными объектами,Кроме того, статический класс может сделать вашу реализацию проще и быстрее, потому что вам не нужно создавать объект для вызова его методов.Полезно организовать методы внутри класса осмысленно, например, методы класса Math в пространстве имен System.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...