登录Wpf ...是不是?

Jay*_*Jay 10 .net c# wpf

我有一个WPF应用程序,可以访问LoginWindow,所以我为这个登录窗口创建一个Splash Screen,如下所示:

- 在App.xaml中

< Application x:Class="WPF.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Startup="Application_Startup"
    />
Run Code Online (Sandbox Code Playgroud)

- 在App.xaml.cs中:

      private void Application_Startup(object sender, StartupEventArgs e)
  {
         Login login = new Login();
        login.Show();
  }
Run Code Online (Sandbox Code Playgroud)

- 如果登录成功,则在Login.xaml.cs中:

PrimaryWindow mainWindow= new PrimaryWindow ();

Application.Current.MainWindow = mainWindow;

this.Close();

mainWindow.Show();
Run Code Online (Sandbox Code Playgroud)

.这段代码是对的,但是由于我的知识不足,我不知道这是一个很好的申请登录窗口的方法,我不知道这个方法对于我的应用程序存储数据是否"危险"数据库,并有很多功能,所以我问你我的方式是否好,如果你有更好的方式,你可以建议或告诉我吗?

感谢您的关注.

祝你好运.

mik*_*uld 15

我会用2个窗口和一个Application_Startup方法处理这个问题.这是我的应用程序(具有类似的登录想法)看起来像:

/// In App.xaml.cs
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application {
    private MainWindow main = new MainWindow();
    private LoginWindow login = new LoginWindow();

    private void Application_Startup(object sender, StartupEventArgs e) {
        Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
        Application.Current.MainWindow = login;

        login.LoginSuccessful += main.StartupMainWindow;
        login.Show();
    }
}

/// In LoginWindow.xaml.cs
/// <summary>
/// Interaction logic for LoginWindow.xaml
/// </summary>
public partial class LoginWindow : Window {
    internal event EventHandler LoginSuccessful;

    public LoginWindow() { InitializeComponent(); }

    private void logInButton_Click(object sender, RoutedEventArgs e) {
        if ( // Appropriate Login Check Here) {
            LoginSuccessful(this, null);
            Close();
        } else {
            // Alert the user that login failed
        }
    }
}

/// In MainWindow.xaml.cs
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
    public MainWindow() { InitializeComponent(); }

    internal void StartupMainWindow(object sender, EventArgs e) {
        Application.Current.MainWindow = this;
        Show();
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许用户仅通过关闭登录窗口(即根本不登录)或通过在他们使用它一段时间后关闭主窗口来关闭应用程序.


小智 5

我正在使用这个

    void App_Startup(object sender, StartupEventArgs e)
    {
        this.MainWindow = new MainWindow();

        LoginWindow loginWindow = new LoginWindow();
        if (loginWindow.ShowDialog() ?? false)
        {
            this.MainWindow.Show();
        }
        else
        {
            this.Shutdown();
        }
    }
Run Code Online (Sandbox Code Playgroud)

或者在检查凭据后必须创建 MainWindow 的情况下。

    void App_Startup(object sender, StartupEventArgs e)
    {
        this.ShutdownMode = ShutdownMode.OnExplicitShutdown;

        LoginWindow loginWindow = new LoginWindow();
        if (loginWindow.ShowDialog() ?? false)
        {
            this.ShutdownMode = ShutdownMode.OnMainWindowClose;
            this.MainWindow = new MainWindow();
            this.MainWindow.Show();
        }
        else
        {
            this.Shutdown();
        }
    }
Run Code Online (Sandbox Code Playgroud)