【发布时间】:2020-07-06 13:16:45
【问题描述】:
根据我之前的帖子。我让它正常工作。
在欢迎屏幕中,用户输入他/她的详细信息。比如名字和姓氏。然后用户单击下一步按钮。欢迎屏幕关闭,主窗口打开。
但是,在 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();
}
我的主窗口代码:
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方法来执行创建/显示,这将使访问它们变得更加困难,因为它会隐藏您创建的实例。如果您的主窗口改为使用new WelcomeForm()..部分,则可以通过创建的实例访问公共变量。关于这类事情,这里有很多问题。 -
这能回答你的问题吗? Send values from one form to another form
-
这个问题可以作为重复问题删除吗?我已经尝试过该帖子中提到的代码,但它没有回答我的问题。
标签: c# winforms user-input user-experience