internal class UserLoginData
{
public string UserName;
public string AvatarImagePath;
}
internal class UserLoginForm : Form
{
public new UserLoginData ShowDialog()
{
// Form'daki ShowDialog'u çağır. Bu satırda metodun akışı durur.
// DialogResult tipinden dönüş değerini kullanabilirsin. Ben kullanmadım ancak
// kullanmanı tavsiye ederim. Örneğin bu Forma bir iptal butonu ekleyip DialogResult property'sini
// DialogResult.Cancel yapabilirsin. Butona tıklandığında base.ShowDialog()
// DialogResult.Cancel döndürecek. Bunu yakalayıp ona göre null döndürebilirsin mesela.
base.ShowDialog();
var userLoginData = new UserLoginData();
// Burada kontrollerdeki veriyi kullanarak userLoginData'yı doldur.
// Ardından userLoginData'yı döndür.
return userLoginData;
}
}
internal class MainForm : Form
{
private UserLoginData _userLoginData;
public UserLoginData ShowUserLoginForm()
{
// Burası önemli. Login Formu ShowDialog ile gösterildiğinden, Formu kapattığında Dispose edilecek.
// Buda reference ımızı geçersiz kılar. Bu sebeple her seferinde yeni Form yaratılmalı.
var userLoginForm = new UserLoginData();
_userLoginData = userLoginForm.ShowDialog();
return _userLoginData;
}
}