Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件夹后面的主窗口,也使用闪屏_C#_Wpf_Window_Splash Screen - Fatal编程技术网

C# 文件夹后面的主窗口,也使用闪屏

C# 文件夹后面的主窗口,也使用闪屏,c#,wpf,window,splash-screen,C#,Wpf,Window,Splash Screen,我得到了这个WPF应用程序,在这里我制作了一个带有processbar的Splashscreen(wfp窗口)。(现在我只是让它运行一个计时器,以便稍后更改) 到目前为止,这一切似乎都很有效 但是,发生了以下情况: -我从文件夹(../bin/release/)启动生成 -Splash现在出现在屏幕上,processbar开始运行。 -在满栏时,它将启动主应用程序(主窗口) 但是,此主窗口现在不从顶部开始,它位于执行exe的文件夹后面(在本例中为../release/) 我一直在四处寻找,但我真

我得到了这个WPF应用程序,在这里我制作了一个带有processbar的Splashscreen(wfp窗口)。(现在我只是让它运行一个计时器,以便稍后更改)

到目前为止,这一切似乎都很有效

但是,发生了以下情况: -我从文件夹(../bin/release/)启动生成 -Splash现在出现在屏幕上,processbar开始运行。 -在满栏时,它将启动主应用程序(主窗口) 但是,此主窗口现在不从顶部开始,它位于执行exe的文件夹后面(在本例中为../release/)

我一直在四处寻找,但我真的不知道如何使用我在互联网上找到的狙击手,也不认为这些是正确的修复方法。 而是使用合适的修复方法,然后使用一些解决方法(如果可能的话)

那么,为什么会发生这种情况,我如何才能改变这种行为来正常工作呢?(这样,主屏幕在飞溅后会显示在顶部(非持久性)

代码的某些部分: 大体上

使用。。。。。。。。
//等等等等。。。
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
//创建exitmessage供以后使用,毕竟,我们希望在其他方法中使用它。
字符串exitmessage=null;
公共主窗口()
{
//启动新线程并将其用于splashscreen。
螺纹t=新螺纹(新螺纹起点(飞溅屏幕));
t、 SetApartmentState(ApartmentState.STA);
t、 Start();
睡眠(5000);
//启动主窗口
初始化组件();
//结束飞溅过程。
t、 中止();
//区域//检查语言
}
公共屏幕()
{
WpfApplication1.Window4 X=新的WpfApplication1.Window4();
X.ShowDialog();
}
//区域//等…应用程序内容
}
}
在window4中(飞溅)

使用。。。。。
//等等。。等
命名空间WpfApplication1
{
/// 
///Window4.xaml的交互逻辑
/// 
公共部分类Window4:Window
{
System.Windows.Threading.dispatchermer dispatchermer=新的System.Windows.Threading.dispatchermer();
公共窗口4()
{
初始化组件();
定时器1();
}
公共无效计时器1()
{
dispatchermer.Tick+=新事件处理程序(dispatchermer\u Tick);
Dispatchermer.Interval=新的时间跨度(0,0,0,25);
dispatchermer.Start();
}
私有void Dispatcher_Tick(对象发送方,事件参数e)
{
如果(progressBar1.Value==100)
dispatchermer.Stop();
其他的
progressBar1.Value++;
}
}
}
希望有人能帮我。
塔克斯

不要试图在主窗口中显示飞溅。。正确的方法是,您应该尝试创建一个没有边框、没有大小调整的窗口,并保持在顶部。。然后调用app.cs中的window.show()

这里有一篇文章定义了如何做到这一点

编辑:

您可以订阅backgroundworker的progresschange事件。无论何时从DoWork eventHandler调用worker.ReportProgress()方法,都会触发此操作

worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
该行将添加到InitOperation类中的这些行之后

BackgroundWorker worker = new BackgroundWorker();
worker.DoWork+=new DoWorkEventHandler(worker_DoWork);
在DoWork的事件处理程序中,您可以使用

worker.ReportProgress(100);
在worker_ProgressChanged事件处理程序中,可以更改条形图的进度


问候

thanx!我会看一看那个,如果有用的话再发回来:)嗯,有点有用。。。它现在确实来了(飞溅),但它更多的是一个闪光呵呵。所以我想在上面的第二个狙击坑中输入一些虚拟计时器。我真的不知道我现在应该把它放在哪里。有什么建议吗?我想让你看到pogressbar被加载:)我添加了一些代码。。您可以订阅Backgroundworker的ProgressChanged事件以显示progressbar。在这种情况下,您不需要计时器。
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork+=new DoWorkEventHandler(worker_DoWork);
worker.ReportProgress(100);