我有3种形式:
一种登录表单:
一个创建帐户表单:
和一个软件表单,您可以成功登录。然而,那个与我的情况无关。现在,有一个类看起来像这样:
我用get;组;所以我可以从帐户创建者表单中获取值。
这是帐户创建者表单的代码:
所以我的问题是,为什么这不会改变Class Accounts.cs中属性的值?
答案 0 :(得分:0)
帐户用户对象是在表单创建帐户中创建的。
您需要将值传递给另一个表单或使用静态变量。
Here explains how to create a static variable and how to pass object to another Form
答案 1 :(得分:0)
问题是"为什么这不会改变Class Accounts.cs中属性的值?" 。发布的代码将更改该类实例的3个属性中的2个。如果您没有看到,那么您必须查看该类的其他实例。以下是从对话框外部获取对话框中输入的信息所能做的...
将accounts
类重命名为Account
,因为每个实例仅代表一个帐户,并且通常会将类名称大写。
在帐户创建者表单上,将user
的声明更改为公共财产:
public Account user { get; } = new Account();
这使您可以从使用表单的位置访问它。所以你可能会有一些代码:
var form=new CreateAccountForm();
form.ShowDialog();
您现在可以使用form.user
访问该表单上Account类实例的内容。
但是,您需要知道他们是按下按钮还是只是关闭了对话框。因此,请在this.DialogResult=DialogResult.OK;
行之后设置string email=
。
string email=
应替换为user.email=
。
this.Hide();
应为this.Close();
然后调用代码可以变为:
var form=new CreateAccountForm();
if (form.ShowDialog()==DialogResult.OK)
{
// Do something with form.user here.
}
当然,任何表格都是一次性的,因此form
的声明应该在using
块中完成。
免责声明:所有这些都是从我的电脑上写下来的。