wpf我在第一个窗体后新建了一个窗体,要怎么弄才能使程序运行时先显示我新建的那个窗体?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf我在第一个窗体后新建了一个窗体,要怎么弄才能使程序运行时先显示我新建的那个窗体?相关的知识,希望对你有一定的参考价值。

就是第一个窗体要在第二个窗体后显示

修改App.xaml中的StartupUri="CustomForm.xaml",
或者在App.cs里重构
protected override void OnStartup(StartupEventArgs e)

base.OnStartup(e);
var mainwin = new CustomForm();
Application.Current.MainWindow = mainwin;
mainwin.Show();
参考技术A Program.cs中,Application.Run(new Form1());
Form1改成你自己的。本回答被提问者采纳

WPF最小化窗体后激活函数显示不了窗体

WPF最小化窗体后激活函数显示不了窗体

今天测试小哥给我提了一些问题,其中一个问题是这样的,点击web端的一个链接,是能启动本地的一个应用程序的,如果本地应用程序已启动(通过tcp进程间通信),那么应该要能显示这个本地应用窗口。但是他测试的时候发现并没有预期的效果。

经过多次测试后,发现无效的情况是在窗体设置为最小化的时候,激活显示不了窗体,如果这个窗体只是在其它窗体后面是可以激活的。
测试代码如下:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.WindowState = WindowState.Maximized;
        this.SleepShow();
    }
    public void SleepShow(double sleep = 5)
    {
        DispatcherTimer dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Interval = TimeSpan.FromSeconds(sleep);
        dispatcherTimer.Tick += (sender, e) => {
            this.Activate();
            Console.WriteLine("激活显示窗体");
        };
        dispatcherTimer.Start();
    }
}

在当前窗体不是最小化状态下都是有效的,最小化就是不能使用。
加入Topmost = true;也没用。最后的解决方法是,需要先将窗体的WindowState还原为原来的状态,肯定是非Minimized状态的。处理代码如下:

public partial class MainWindow : Window
{
    private WindowState windowState;
    public MainWindow()
    {
        InitializeComponent();
        this.WindowState = WindowState.Maximized;
        this.StateChanged += MainWindow_StateChanged;
        this.SleepShow();
        this.windowState = WindowState.Maximized;
    }

    private void MainWindow_StateChanged(object sender, EventArgs e)
    {
        if(this.WindowState == WindowState.Minimized)
        {
        }
        else
        {
            this.windowState = this.WindowState;//保存非最小化的状态
        }
    }

    public void SleepShow(double sleep = 5)
    {
        DispatcherTimer dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Interval = TimeSpan.FromSeconds(sleep);
        dispatcherTimer.Tick += (sender, e) => {
            if(this.WindowState == WindowState.Minimized)//判断当前如果是最小化状态,那么就需要还原,再激活
            {
                this.WindowState = this.windowState;//还原状态
            }
            this.Activate();
            Console.WriteLine("激活显示窗体");
        };
        dispatcherTimer.Start();
    }
}

还有一个问题就是在调节窗体大小时,获取窗体中的TabControl的ActualHeight和ActualWidth的值总是不变,另外开一个应用程序去测试获取的时候,结果值又是正确的,一脸懵逼。最后往上查找节点最终发现是因为Viewbox控件导致的-V-。最后调整了ViewBox的使用位置,问题解决,自测几遍后,打包发给测试,验证通过。

以上是关于wpf我在第一个窗体后新建了一个窗体,要怎么弄才能使程序运行时先显示我新建的那个窗体?的主要内容,如果未能解决你的问题,请参考以下文章

wpf窗体设置阴影后,窗体圆角就会有阴影颜色,圆角就失效了,如何解决啊?求解

winform 添加wpf 窗体怎么使用

wpf window窗口中嵌入一个window窗口

wpf后台怎么处理窗体的background属性!!

用vs2008创建的wpf项目。。 居然显示不出来窗体。。。 可以直接运行。。 运行只有一个空白的窗体。

WPF 子窗体 在 父窗体 中 打开,初学不懂,请指教