如何在启动时弹出登录表单以获取密码(它不会在MainPage的构造函数中弹出)
本文关键字:MainPage 构造函数 获取 启动 登录 表单 密码 | 更新日期: 2023-09-27 18:12:24
我在silverlight工作,我已经创建了一个子窗口,我有用户名和密码。
private void OKButton_Click(object sender, RoutedEventArgs e)
{
if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
{
this.DialogResult = true;
}
else
{
MessageBox.Show("Incorrect username and/orpassword","Error",MessageBoxButton.OK);
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
之后,我有我的主页,其中包含整个项目GUI。(这里我也尝试弹出一个ChildWindow,但它没有这样做,但当我放一个MessageBox.Show("Hello");然后弹出)
public partial class MainPage : UserControl
{
public MainPage()
{
loginChildWindow obj = new loginChildWindow();
obj.Show(); //It do not pop up actually
MessageBox.Show("hello"); //whereas thsi messagebox popups
InitializeComponent();
}
}
所以设置登录ChildWindow在启动时间为我的项目,我认为我应该做InitializeComponent();
只有当我的密码和用户名是匹配的。所以这个InitializeComponent();必须在
if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
{
InitializeComponent();
}
但是当我这样做时,它会给出错误(很明显,我不能在构造函数中这样做):
public partial MainPage : UserControl
{
{
public MainPage()
{
private void OKButton_Click(object sender, RoutedEventArgs e)
{
if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
{
this.DialogResult = true;
InitializeComponent();
}
else
{
MessageBox.Show("Incorrect username and/orpassword","Error",MessageBoxButton.OK);
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
}
但如何解决它是我的问题?
EDIT AFTER User1 comments:这两个类是:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Loaded += MainPage_Loaded;
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Visibility = Visibility.Collapsed;
loginChildWindow log = new loginChildWindow();
log.Show();
}
}
和
public partial class loginChildWindow : ChildWindow
{
public loginChildWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (txtUsrname.Text == "Username" && txtPassword.Password == "Password")
{
MainPage obj = new MainPage();
obj.Visibility = Visibility.Visible;
obj.InitializeComponent();
this.DialogResult = true;
}
else
{
MessageBox.Show("Incorrect username and/orpassword", "Error", MessageBoxButton.OK);
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
private void Login_Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
}
}
try:
public MainPage()
{
InitializeComponent();
LoginWindow loginWnd=new LoginWindow();
loginWnd.Closed+= new EventHandler(loginWnd_Closed);
loginWnd.Show();
}
void loginWnd_Closed(object sender, EventArgs e)
{
LoginWindow lw = (LoginWindow)sender;
if (lw.DialogResult == true && lw.nameBox.Text != string.Empty)
{
this.textBlock1.Text = "Hello " + lw.nameBox.Text;
}
else if (lw.DialogResult == false)
{
this.textBlock1.Text = "Login canceled.";
}
}
where LoginWindow is:
public LoginWindow()
{
InitializeComponent();
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
private void LoginWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.DialogResult == true && (this.nameBox.Text == string.Empty || this.passwordBox.Password == string.Empty))
{
e.Cancel = true;
ChildWindow cw = new ChildWindow();
cw.Content = "Please Enter your name and password or click Cancel.";
cw.Show();
}
}
请参阅下面的链接获取更多信息
how-to-work-with-LoginWindows