因为我和C#一起工作已经有很长一段时间了,感觉又像是一个新手了。我在使用API的项目中创建了一个简单的GUI,我需要创建一个简单的登录表单。当有人点击"登录"我会弹出辅助表单。在提示输入用户名和密码的主窗体上,然后关闭该窗体并将信息存储在该类中。问题是,我怎么知道该表格什么时候关闭?
是否有更简单的方法可以执行此操作,或者在辅助表单上单击登录按钮时返回用户名和密码?
我的代码的基础知识如下:
Main.cs
namespace My_Namespace {
public partial class frmMain : Form {
public frmMain() {
InitializeComponent();
}
}
private void mnitLogin_Click(object sender, EventArgs e) {
Login login = new Login();
login.ShowDialog();
}
}
Login.cs
namespace My_Namespace {
public partial class Login : Form {
private String Username;
private String Password;
public Login() {
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e) {
Username = txtUsername.Text;
Password = txtPassword.Text;
this.Close();
}
public String getUsername() {
return Username;
}
public String getPassword() {
return Password;
}
}
}
答案 0 :(得分:0)
假设Login
表单是自定义表单而不是默认对话框,最简单的方法是提升对“登录”按钮的“.Click”事件的访问权限,并在打开它之前添加处理程序。
处理程序激活后,您可以从frmMain
检索详细信息,验证它们并关闭登录表单(或显示详细信息无效的消息)。
答案 1 :(得分:0)
ShowDialog完成后,Click事件继续执行 - 即窗口关闭时。该对象仍然有效,因此您可以使用login.getUsername()& login.getPassword()
答案 2 :(得分:0)
通过30分钟的搜索来计算出来。
通过将DialogResult属性添加到Login表单上的按钮,我可以检查表单何时关闭。我不得不稍微改变表单打开的方式:
private void mnitLogin_Click(object sender, EventArgs e) {
Login login = new Login();
if (login.ShowDialog() == DialogResult.OK) {
// Do stuff
loginToAPI(login.getUsername(), login.getPassword());
}
}
答案 3 :(得分:0)
在我曾经工作的许多Windows窗体项目中,我们有一个静态或单例类来存储整个应用程序常用的一些数据,例如:
public class SessionInfo
{
public static SessionInfo instance;
public static SessionInfo GetInstance();
{
if(instance == null)
instance = new SessionInfo();
return instance;
}
public string UserName {get; set;}
public string[] UserRoles {get; set;}
}