Создание нового экземпляра form1 и изменение этого свойства формы

В моем текущем проекте я создаю приложение типа заметок, в котором пользователь может открывать несколько экземпляров одной и той же формы. Тем не менее, мне было интересно, есть ли способ в С#, где я могу создать новый экземпляр form1, но при этом заголовок/текст/заголовок новой формы должен быть form2.

Если это достижимо, я хотел бы подтолкнуть в правильном направлении, как кодировать эту часть моего приложения.

Всем спасибо.

--РЕДАКТИРОВАТЬ--

Я понял, что забыл добавить что-то важное:

Мне нужно иметь возможность рассчитать, сколько экземпляров в настоящее время открыто. Оттуда я добавлю +1 к тексту формы.


person Vlad781    schedule 20.07.2012    source источник


Ответы (2)


Попробуйте получить доступ к свойствам формы из класса:

MyForm newForm = new MyForm();
newForm.Show();
newForm.Text = "Form2";

Или вызовите метод из текущей формы для установки текста:

// In MyForm
public void SetTitle(string text)
{
    this.Text = text;
}

// Call the Method
MyForm newForm = new MyForm();
newForm.Show();
newForm.SetTitle("Form2");

Надеюсь это поможет!

Чтобы проверить количество открытых форм, вы можете попробовать что-то вроде этого:

// In MyForm
private int counter = 1;
public void Counter(int count)
{
    counter = count;
}
// Example
MyForm newForm = new MyForm();
counter++;
newForm.Counter(counter);

Это может сбивать с толку, но допустим, у вас есть кнопка, которая открывает новый экземпляр той же формы. Поскольку у вас в начале открыта одна форма counter = 1. Каждый раз, когда вы нажимаете на кнопку, она отправляет в форму counter++ или 2. Если вы откроете другую форму, она отправит counter = 3 и так далее. Возможно, есть лучший способ сделать это, но я не уверен.

person matthewr    schedule 20.07.2012
comment
Да, спасибо за быстрый ответ. Первый способ сработал идеально. Всего один вопрос. Есть ли метод, который позволяет мне подсчитать общее количество форм, запущенных моим приложением? - person Vlad781; 20.07.2012
comment
Application.OpenForms может вам помочь. Имейте это в виду: stackoverflow.com/questions/3751554/ - person Rob Angelier; 20.07.2012
comment
@Rob Angelier Спасибо, это помогло. - person Vlad781; 20.07.2012

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

Вот эскиз; если вы хотите другое поведение, вы можете пропустить переопределение OnFormClosed:

public class TheFormClass : Form
{
    private static int _openCount = 0;

    protected override void OnLoad(EventArgs e)
    {
        _openCount++;
        base.OnLoad(e);
        this.Text = "Form" + _openCount;
    }

    protected override void OnFormClosed(FormClosedEventArgs e)
    {
        _openCount--;
        base.OnFormClosed(e);
    }
}
person phoog    schedule 20.07.2012