如何将用户在欢迎屏幕中输入的 return 值在关闭后显示到主屏幕?
How to return values, entered by the user in a welcome screen, to the main screen after closed?
根据我之前的 post。我让它正常工作。
在欢迎屏幕中,用户输入 his/her 详细信息。比如名字和姓氏。然后用户单击下一步按钮。欢迎屏幕关闭,主 window 打开。
但是,在 main.cs 文件中无法再访问名字和姓氏。
欢迎画面代码:
public string username;
public string usersurname;
static private Form Sender;
static public void Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
new WelcomeForm().ShowDialog();
}
public WelcomeForm()
{
InitializeComponent();
}
private void sign_in_Click(object sender, EventArgs e)
{
username = textBox1.Text;
usersurname = textBox2.Text;
Close();
}
我的主要window代码:
private void Form1_Load(object sender, EventArgs e)
{
WelcomeForm.Run(this);
}
public Form1()
{
InitializeComponent();
}
如何在我的 main.cs 文件中访问用户名和用户姓氏?
更新代码(欢迎屏幕):
private WelcomeFormInputData InputData = new WelcomeFormInputData();
static private Form Sender;
static public WelcomeFormInputData Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
private void ButtonValidate_Click(object sender, EventArgs e)
{
InputData.UserName = textBox1.Text;
InputData.UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
public WelcomeForm()
{
InitializeComponent();
}
public class WelcomeFormInputData
{
public string UserName { get; set; }
public string UserSurname { get; set; }
}
您可以简单地将 Run
方法改进为:
static public WelcomeForm Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form : null;
}
您需要使用按钮管理此对话框结果:
private void ButtonValidate_Click(object sender, EventArgs e)
{
UserName = textBox1.Text;
UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
每个表单都有一些属性来管理:
https://docs.microsoft.com/dotnet/api/system.windows.forms.form.dialogresult
默认情况下,关闭表单时结果为 DialogResult.None
。
非空结果表示用户已经验证了某些内容,并且打开器表单可以通过分配 public 您应该设置为外部只读属性的字段来使用结果:
public string UserName { get; private set; }
public string UserSurname { get; private set; }
另一个意思是return一个结构化数据实体而不是表单本身:
public class WelcomeFormInputData
{
public string UserName { get; set; }
public string UserSurname { get; set; }
}
因此您可以在欢迎表单中更改它:
private WelcomeFormInputData InputData = new WelcomeFormInputData();
static public WelcomeFormInputData Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
private void ButtonValidate_Click(object sender, EventArgs e)
{
InputData.UserName = textBox1.Text;
InputData.UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
这里我们return只有经过验证的数据。
您可以根据需要命名工件,使其最有意义、最简单和最连贯。
注意:如果需要控制MainForm专业化,可以通过MainForm更改Form。
static public WelcomeForm Run(MainForm sender)
但也许你可以放弃 Sender
用法,因为在主窗体中你调用 Run
然后你可以显示它并使用输入的数据:
static public WelcomeFormInputData Run()
{
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
从主窗体开始:
var userdata = WelcomeForm.Run();
Show();
if ( userdata != null )
{
... userdata.UserName ...
... userdata.UserSurname ...
}
您可以像 WelcomeForm.username
一样使用,您可以创建 class 调用 LocalVar 来访问和存储来自任何形式的任何数据,例如
in `LocalVar` class use this type of variables:
`public static string username = "";`
`public static string usersurname = "";`
在此之后,在关闭 WelcomeForm 之前,执行如下代码:
private void sign_in_Click(object sender, EventArgs e)
{
LocalVar.username = textBox1.Text;
LocalVar.usersurname = textBox2.Text;
Close();
}
and now you can usr `LocalVar.username` anywhere in project.
根据我之前的 post。我让它正常工作。
在欢迎屏幕中,用户输入 his/her 详细信息。比如名字和姓氏。然后用户单击下一步按钮。欢迎屏幕关闭,主 window 打开。
但是,在 main.cs 文件中无法再访问名字和姓氏。
欢迎画面代码:
public string username;
public string usersurname;
static private Form Sender;
static public void Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
new WelcomeForm().ShowDialog();
}
public WelcomeForm()
{
InitializeComponent();
}
private void sign_in_Click(object sender, EventArgs e)
{
username = textBox1.Text;
usersurname = textBox2.Text;
Close();
}
我的主要window代码:
private void Form1_Load(object sender, EventArgs e)
{
WelcomeForm.Run(this);
}
public Form1()
{
InitializeComponent();
}
如何在我的 main.cs 文件中访问用户名和用户姓氏?
更新代码(欢迎屏幕):
private WelcomeFormInputData InputData = new WelcomeFormInputData();
static private Form Sender;
static public WelcomeFormInputData Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
private void ButtonValidate_Click(object sender, EventArgs e)
{
InputData.UserName = textBox1.Text;
InputData.UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
public WelcomeForm()
{
InitializeComponent();
}
public class WelcomeFormInputData
{
public string UserName { get; set; }
public string UserSurname { get; set; }
}
您可以简单地将 Run
方法改进为:
static public WelcomeForm Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form : null;
}
您需要使用按钮管理此对话框结果:
private void ButtonValidate_Click(object sender, EventArgs e)
{
UserName = textBox1.Text;
UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
每个表单都有一些属性来管理:
https://docs.microsoft.com/dotnet/api/system.windows.forms.form.dialogresult
默认情况下,关闭表单时结果为 DialogResult.None
。
非空结果表示用户已经验证了某些内容,并且打开器表单可以通过分配 public 您应该设置为外部只读属性的字段来使用结果:
public string UserName { get; private set; }
public string UserSurname { get; private set; }
另一个意思是return一个结构化数据实体而不是表单本身:
public class WelcomeFormInputData
{
public string UserName { get; set; }
public string UserSurname { get; set; }
}
因此您可以在欢迎表单中更改它:
private WelcomeFormInputData InputData = new WelcomeFormInputData();
static public WelcomeFormInputData Run(Form sender)
{
if (sender == null)
throw new ArgumentNullException();
Sender = sender;
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
private void ButtonValidate_Click(object sender, EventArgs e)
{
InputData.UserName = textBox1.Text;
InputData.UserSurname = textBox2.Text;
DialogResult = DialogResult.OK;
Close();
}
这里我们return只有经过验证的数据。
您可以根据需要命名工件,使其最有意义、最简单和最连贯。
注意:如果需要控制MainForm专业化,可以通过MainForm更改Form。
static public WelcomeForm Run(MainForm sender)
但也许你可以放弃 Sender
用法,因为在主窗体中你调用 Run
然后你可以显示它并使用输入的数据:
static public WelcomeFormInputData Run()
{
var form = new WelcomeForm();
return form.ShowDialog() == DialogResult.OK ? form.InputData : null;
}
从主窗体开始:
var userdata = WelcomeForm.Run();
Show();
if ( userdata != null )
{
... userdata.UserName ...
... userdata.UserSurname ...
}
您可以像 WelcomeForm.username
一样使用,您可以创建 class 调用 LocalVar 来访问和存储来自任何形式的任何数据,例如
in `LocalVar` class use this type of variables:
`public static string username = "";`
`public static string usersurname = "";`
在此之后,在关闭 WelcomeForm 之前,执行如下代码:
private void sign_in_Click(object sender, EventArgs e)
{
LocalVar.username = textBox1.Text;
LocalVar.usersurname = textBox2.Text;
Close();
}
and now you can usr `LocalVar.username` anywhere in project.