如何在启动时弹出登录表单以获取密码(它不会在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)
        {
        }
    }

如何在启动时弹出登录表单以获取密码(它不会在MainPage的构造函数中弹出)

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