我想做的是创建一个登录应用程序,您可以在其中注册(用户名和密码(,然后登录。注册是form2,我想在这里做的是输入用户名和密码,这些用户名和密码应该保存在我的个人资料列表中。我一直在试图弄清楚如何在 form1 中使用相同的列表,据我了解,该类必须是静态的,所以我可以在我未来的所有形式中使用它?下面的代码。
namespace windowssomething
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public static class Holder
{
public static List<Person> personlist = new List<Person>();
public class Person
{
public string Name { get; set; }
public string Pass { get; set; }
public Person(string name = " ", string pass = " ")
{
Name = name;
Pass = pass;
}
public string Ts()
{
string s = "";
s += Name;
s += " ";
s += Pass;
return s;
}
}
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void reg_button_form2_Click(object sender, EventArgs e)
{
Holder.Person p1 = new Holder.Person();
p1.Name = textBox1.Text;
p1.Pass = textBox2.Text;
Holder.personlist.Add(p1);
this.Close();
MessageBox.Show(p1.Ts());
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
}}
我也读过这个类在静态时不能有 getter 和 setter,这就是我卡住的地方。因此,如果我使类静态,则获取和设置将不起作用,有什么办法可以解决这个问题吗?
表单实际上只是 UI。Person和Holder类不是,所以他们不应该真正生活在form2
。
将Person
类和Holder
类移出到它们自己的类中,form2
或彼此分开。
人.cs:
public class Person
{
public string Name { get; set; }
public string Pass { get; set; }
public Person(string name = " ", string pass = " ")
{
Name = name;
Pass = pass;
}
public string Ts()
{
string s = "";
s += Name;
s += " ";
s += Pass;
return s;
}
}
如注释中所述,您希望Holder
类是静态实例。执行此操作的一个好方法是使用单例:
支架.cs:
public class Holder
{
private static Holder _instance;
private Holder()
{
People = new List<Person>();
}
public static Holder Instance
{
get
{
if (_instance == null)
_instance = new Holder();
return _instance;
}
}
public List<Person> People { get; set; }
}
现在,您可以通过以下方式从程序中的任何位置访问人员列表(我在示例中将其命名为People
(: Holder.Instance.People
,因此用于添加人员的单击方法现在可能如下所示:
private void regButton_Click(object sender, EventArgs e)
{
var person = new Person
{
Name = userTextBox.Text,
Pass = passTextBox.Text
};
Holder.Instance.People.Add(person);
this.Close();
MessageBox.Show(person.Ts());
}