Передача переменных между формами
Итак, вам нужно передать какое-то значение переменной из form1 в form2, а вообще, вероятно и в любую другую.
Давайте для примера предположим, что нам, допустим, нужно передавать логин/пароль бедного пользователя, чтобы проверять на определенных этапах — что это за хрен с горы.
Что ж, тогда для начала нам нужно объявить глобальные переменные в Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ebala
{
internal static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main ()
{
Application.EnableVisualStyles ();
Application.SetCompatibleTextRenderingDefault (false);
Application.Run (new Form1 ());
}
public static string user;//делаем глобальную переменную (да-да, это то, что мы добавили)
public static string password;//и эту тоже
}
}
Далее идем в нашу первую форму и делаем там пару текстбоксов, типа так:

Вы, конечно же, скажете: «А где кнопко? Ты что, наркоман?»
А я отвечу, что ты сам наркоман, и залезу под диван для примера достаточно задействовать обработчик KeyDown. Притом мы не жадные, поставим его и на первый и на второй текстбокс. Текст введенный в них мы передаем в переменные, которые объявили выше, которые находятся в Program, в доме который построил Джек так что у нас получится
using System.Windows.Forms;
namespace ebala
{
public partial class Form1: Form
{
public Form1 ()
{
InitializeComponent ();
}
private void textBox1_KeyDown (object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)//нам нужна реакция только на Enter
{
Program.user = textBox1.Text;//забираем значение из первого текстбокса
Program.password = textBox2.Text;//и из второго
Form2 form2 = new Form2 ();
form2.Show ();//объявляем и переходим ко второй форме
this.Hide ();//а эту с глаз долой прячем
}
}
private void textBox2_KeyDown (object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)//нам нужна реакция только на Enter
{
Program.user = textBox1.Text;//забираем значение из первого текстбокса
Program.password = textBox2.Text;//и из второго
Form2 form2 = new Form2 ();
form2.Show ();//объявляем и переходим ко второй форме
this.Hide ();//а эту с глаз долой прячем
}
}
}
}
Ок, теперь быстро-быстро накидаем вторую форму и уже в ней обратимся к этим переменным, я ленивая жопа, так что берегите глаза:

Ну и сделаем банальный обработчик нажатия кнопки (и, так уж и быть, обработчик завершения программы при закрытий этой прекрасной как горный цветок формочки):
using System;
using System.Windows.Forms;
namespace ebala
{
public partial class Form2: Form
{
public Form2 ()
{
InitializeComponent ();
}
private void button1_Click (object sender, EventArgs e)
{
MessageBox.Show (Program.user + " " + Program.password);//посмотрим что же мы там ввели, используя месседжбокс
}
private void Form2_FormClosed (object sender, FormClosedEventArgs e)
{
Application.Exit ();//убиваем процесс
}
}
}
Что ж, проверим результат:

Я, конечно, мог бы скрыть пароль, используя свойство «PasswordChar», но я не Эмиль Кио и не Амаяк Акопян, и секретов фокусов от вас у меня нет, к тому же мне опять лень так нагляднее.
Жамкаем Enter и видим шыдевр дизайна:

Отлично, нам осталось только нажать на кнопку кнопко:

Вот так просто и лаконично можно тасовать карты переменные.