Почему поле во втором методе равно null, когда я в первом создал экземпляр класса
FTP ftp;
public void ConnectFTP(string ip)
{
ftp = new FTP(ip);
}
private void button1_Click(object sender, EventArgs e)
{
ftp.ConnectionFTPAsync();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 form = new Form2();
form.ShowDialog();
if (form.DialogResult == DialogResult.OK)
{
form.Close();
}
else
{
Application.Exit();
}
}
в методе button1_Click поле ftp = null. Не могу понять почему. ConnectFTP выполняется до button1_Click (он вызывается с другой формы перед ее закрытием). Если переместить ftp.ConnectionFTPAsync(); в ConnectFTP, то все будет хорошо.
код 2 формы:
if (textBox1.Text != "")
{
if (textBox2.Text != null && textBox3.Text != "")
{
String ip, login, password;
login = textBox2.Text;
password = textBox3.Text;
ip = textBox1.Text;
ip = "ftp://192.168.0.105";
Form1 form = new Form1();
form.ConnectFTP(ip);
this.DialogResult = DialogResult.OK;
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Самое простое для вас:
1) Измените конструктор второй формы вот так
private Form1 _form1;
public Form2(Form1 form)
{
_form1 = form;
}
2) Вызывайте второе окно вот так
Form2 form = new Form2(this);
form.ShowDialog();
3) а обращайтесь к методу вот так
_form1.ConnectFTP(ip);
При этом обязательно уберите вот эту строчку
//Form1 form = new Form1();
Еще Application.Exit() можно просто заменить на Close()