首先打开新窗口

Afn*_*hir 9 wpf

如何才能做到这一点

首先出现登录窗口,如果每件事情都很好,只需关​​闭登录窗口并打开第二个主窗口.在win表单中我们修改program.cs但在wpf中没有program.cs.

任何解决方案.?

实际上我完成了创建的窗口中的大部分工作默认情况下,现在想要使它成为辅助(意味着它应该出现,然后在需要控制到新窗口时关闭)

   <Application x:Class="DevnMark_V1._0.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup">

    <Application.Resources>

    </Application.Resources>
</Application>



 public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            var login = new MainWindow();
            login.ShowDialog();
            if (myAppSett.Default.validated == true)
            {
            var mainWindow = new DevNMarkMainWindow();              
                mainWindow.ShowDialog();
            }
        }
Run Code Online (Sandbox Code Playgroud)

登录窗口启动XML

<Window x:Class="DevnMark_V1._0.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        xmlns:local="clr-namespace:Progress"
        Title="MainWindow" Height="292" Width="563" WindowStyle="None" BorderBrush="#FF0A6277" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Topmost="True">
Run Code Online (Sandbox Code Playgroud)

当我关闭登录窗口时发生异常,并且InitializeComponent();当它将被启动时被查看时发生在第二个窗口的点

小智 7

我用这种方式解决了这个问题:

  1. 我从App.xaml中删除了StartupUri="MainWinodw.xaml",只留下了Startup="Application_Startup".

  2. Application_Startup,我立即引用了登录和主窗口:

    loginwindow Login = new loginwindow();
    mainwindow Main = new mainwindow();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我验证了我的登录,然后关闭了登录窗口并打开了一个简单的主窗口.Show():

    Login.ShowDialog();
    if (!Login.DialogResult.HasValue || !Login.DialogResult.Value)
    {
        Application.Current.Shutdown();
    }
    
    main.Show();
    
    Run Code Online (Sandbox Code Playgroud)

没有变化ShutdownMode.


Chr*_*ham 4

可能没有program.cs,但默认的WPF程序模板中有一个App.xaml.cs,您可以在那里做同样的事情。

您想要做的是从 App.xaml 中删除 StartupUri="LoginWindow.xaml",然后修改 App.xaml.cs 的构造函数以调用登录窗口和主窗口,如下所示:

public App() : base() {
    bool authenticated = false;
    LoginWindow login;
    while (!authenticated)
    {
        login = new LoginWindow();
        login.ShowDialog();
        authenticated = ValidUser(login.username, login.password);
    }

    MainWindow main = new MainWindow(login.username);
    main.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

上面的示例假设您已将usernamepassword作为公共属性添加到 LoginWindow,并且您已修改 MainWindow 的构造函数以采用参数。