Чтобы заставить работать БЕЙСИК, сделайте следующее. Создайте новый проект. Ничего из вашего текущего кода, окон и т. Д. Проект по умолчанию создаст форму "Form1", пока оставьте ее в покое.
Добавьте в проект НОВУЮ форму, по умолчанию она будет "Form2" ... Поместите на нее одно текстовое поле и одну кнопку. Для осмысления и уточнения различий между именами объектов измените имя элементов управления в Form2 на «txtOnForm2» и «btnOnForm2» (чувствителен к регистру для моего образца и читаемость по сравнению с «txtonform2» для всех строчных букв). Теперь в форме щелкните правой кнопкой мыши и выберите «Просмотр кода». Это приведет вас к другому объявлению «Частичный класс», где находятся ваши конструкторы. Добавьте следующее, не беспокойтесь об ошибках компиляции, так как другая половина будет, когда мы поместим код в Form1 next ...
// specifically typecasting the TYPE of form being passed in,
// not just a generic form. We need to see the exposed elements
Form1 CalledFrom;
// Ensure to do the : this() to make sure default behavior
// to initialize the controls on the form are created too.
public Form2(Form1 viaParameter) : this()
{
CalledFrom = viaParameter;
}
private void btnOnForm2_Click(object sender, EventArgs e)
{
CalledFrom.ValuesByProperty = this.txtOnForm2.Text;
MessageBox.Show( "Check form 1 textbox" );
string GettingBack = CalledFrom.ValuesByProperty;
MessageBox.Show( GettingBack );
CalledFrom.SetViaMethod( "forced value, not from textbox" );
MessageBox.Show( "Check form 1 textbox" );
GettingBack = CalledFrom.GetViaMethod();
MessageBox.Show( GettingBack );
}
Сохраните и закройте окно конструктора и кода Form2.
Теперь откройте Form1. Поместите одно текстовое поле и одну кнопку на нем. Имена по умолчанию для элементов управления будут «textbox1» и «button1» соответственно. Оставь как есть. Дважды щелкните по кнопке (на форме 1). Это вызовет фрагмент кода для этой кнопки. Вставьте следующее
private void button1_Click(object sender, EventArgs e)
{
Form2 oFrm = new Form2(this);
oFrm.Show();
}
public string ValuesByProperty
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
public void SetViaMethod(string newValue)
{ this.textBox1.Text = newValue; }
public string GetViaMethod()
{ return this.textBox1.Text; }
Теперь сохраните формы и запустите их. Нажмите кнопку в первой форме, вызывает вторую с уже созданным экземпляром, а не с новым экземпляром SECOND. Вторая форма будет отображаться. Сдвиньте окна, чтобы вы могли видеть оба.
Введите некоторый текст во втором окне текстового поля и нажмите кнопку ... следуйте назад / вперед того, что приходит / уходит.