如何才能做到这一点
首先出现登录窗口,如果每件事情都很好,只需关闭登录窗口并打开第二个主窗口.在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
我用这种方式解决了这个问题:
我从App.xaml中删除了StartupUri="MainWinodw.xaml",只留下了Startup="Application_Startup".
在Application_Startup,我立即引用了登录和主窗口:
loginwindow Login = new loginwindow();
mainwindow Main = new mainwindow();
Run Code Online (Sandbox Code Playgroud)我验证了我的登录,然后关闭了登录窗口并打开了一个简单的主窗口.Show():
Login.ShowDialog();
if (!Login.DialogResult.HasValue || !Login.DialogResult.Value)
{
Application.Current.Shutdown();
}
main.Show();
Run Code Online (Sandbox Code Playgroud)没有变化ShutdownMode.
可能没有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)
上面的示例假设您已将username和password作为公共属性添加到 LoginWindow,并且您已修改 MainWindow 的构造函数以采用参数。