我想要做的是创建一个loginapplication,您可以在其中注册(用户名和密码),然后登录。 注册是在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();
}
}}
我也读过这样的课,当静电时,它不能有吸气剂和固定器,这就是我卡住的地方。因此,如果我将类设为静态,则获取和设置将不起作用,有没有办法解决这个问题?
答案 0 :(得分:0)
表单实际上只是UI。人和持有人的课程不是,所以他们不应该真的住在form2
。
将Person
和Holder
课程移到他们自己的班级中,与form2
或彼此分开。
Person.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
类成为静态实例。一个很好的方法是使用Singleton:
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());
}