WPF 用Main函数方式启动程序

原文:WPF 用Main函数方式启动程序

WPF默认程序启动:新建project后自动生成的App.xaml中指定程序启动方式(StartupUri="MainWindow.xaml"),如下代码所示,启动MainWindow页面

<Application x:Class="MyFirstWPFApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MyFirstWPFApplication"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

 

WPF用Main函数方式启动程序:自己写Main函数作为启动点

1.在WPF自动生成的App.cs文件中写Main函数

public partial class App : Application
    {
        [STAThread]
        static void Main()
        {       // 方式1
            Application app = new Application();
            MyWindow win = new MyWindow();
            app.Run(win);

            // 方式2
            MyWindow win = new MyWindow ();
            app.MainWindow = win;
            win.Show();
            app.Run();  

            // 方式3
            app.StartupUri = new Uri("MyWindow.xaml", UriKind.Relative);
            app.Run();
        }
    }

2.自己创建一个类,写Main函数

public static class StartUpClass
    {

   // [STAThread] attribute指示应用程序的 COM线程模型是单线程单元
        [STAThread]
        public static void Main(string[] args)
        {
            SingleInstanceStart SingleInstanceStart = new SingleInstanceStart();
            SingleInstanceStart.Run(args);
        }
    }

WindowsFormsApplicationBase需要引用Microsoft.VisualBasic.dll

public class SingleInstanceStart : WindowsFormsApplicationBase
    {
        protected override bool OnStartup(StartupEventArgs e)
        {
            // DoSomething
            return true;
        }
    }

最后 需要更改App.xaml文件属性

生成操作从ApplicationDefinition改为Page。

时间: 2024-08-03 12:00:00

WPF 用Main函数方式启动程序的相关文章

如何为WPF添加Main()函数 程序入口点的修改

一般的.WPF的Main()函数是自动生成的,不过有时候我们需要为我们的应用程序传参.那么自动生成的Main()函数就不会满足我们的要求.那么如何为WPF Application 设置Main()函数呢. 1.新建一个WPF项目 2.添加一个Program.cs类,代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace WpfApplication1{st

新人求教,关于没有main函数如何运行程序

问题描述 最近在看Java核心技术卷1.里面的程序范例有的没有main函数,该如何运行呢?我用的是eclipse.范例:packageplaf;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.SwingUtilities;

javaw方式启动程序怎样传递JVM参数

问题描述 RT,由于是JAVA应用程序需屏蔽dos窗口,因此采用批处理调用,使用javaw调用程序,但这种方式不能传入JVM参数,请问这种情况怎样才能解决目前的批处理文件我是这样写的:startC:Progra~1Javajdk1.6.0_06binjavaw%JAVA_VM%%MEM_ARGS%-Djava.library.path="%dctmSharedPath%"-classpath"%CLASSPATH%"com.nantian.cdws.mdbimpor

JavaScript学习笔记(三):JavaScript也有入口Main函数_javascript技巧

在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法.而在JavaScript中,程序是从JS源文件的头部开始运行的.但是某种意义上,我们仍然可以虚构出一个main函数来作为程序的起点,这样一来不仅可以跟其他语言统一了,而且说不定你会对JS有更深的理解. 1. 实际的入口 当把一个JavaScript文件交给JS引擎执行时,JS引擎就是从上到下逐条执行每条语句的,直到执行完所有代码. 2. 作用域链.全局作用域和全局对象 我们知道,JS中的每个函数在执行时都会产生一个新的

c++-请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同?

问题描述 请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同? 请问在这个约瑟夫问题中,把数组定义在main()函数前与下面程序中定义的数组方式 有什么异同? 为什么在VC6.0中认为示例程序的数组错误,而在dev C++中却没事 #include <iostream> #include <iomanip> //调用setw()函数 using namespace std; //bool str[101]; int main() { int

为什么一个c程序只能有一个main函数

问题描述 为什么一个c程序只能有一个main函数 为什么一个c程序只能有一个main函数?如果一个程序有多个功能,那么不能有多个main函数么? 解决方案 不是说一个程序只能有一个main函数,而是说一个程序中,每个函数必须有自己的名字(C++有函数重载,同名,同参数的函数也只能有一个). 否则你调用函数的时候,编译器怎么知道你调用的是哪一个. 至于程序有很多功能,这个只要一个main函数,在里面通过程序启动参数或者菜单等区分就可以了. 解决方案二: 这是规定,程序只有一个入口函数main().

C#的webservice启动后如何设置进入main函数

问题描述 大家好,一个问题,就是.net的webservice启动后如何进入main函数(自己写的一个函数),用于执行webservice启动后自动执行的一段代码,分数不多了,希望大家不要介意. 解决方案 解决方案二:Application_Start解决方案三:你F10进去之后看它进哪个函数了解决方案四:进入main函数->这应该是个方法,调用的webservice,在函数里加断点调试,用#2的方式进入.解决方案五:webservice又不是windowsservice,哪来main函数啊,w

《C和C++程序员面试秘笈》——1.12 C++中main函数执行完后还执行其他语句吗

1.12 C++中main函数执行完后还执行其他语句吗 C和C++程序员面试秘笈考点: atexit()函数的使用 出现频率: [解析] 很多时候,我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,例如main()函数运行结束,在程序的某个地方用exit()结束程序,用户通过Ctrl+C等操作发信号来终止程序,等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理.方法就是用atexit()函数来注册程序正常终止时要被调用的函数. atexit()函数的

C程序中如何调用main函数参数

main函数提供的含参原型如: int _tmain(int argc, _TCHAR* argv[]) { for(int i=0;i<argc;i++)  _tprintf(_T("%s\n"),argv[i]); return 0; } 或者如: int main(int argc, char **argv) { } linux下为: #include "/usr/include/stdio.h" int main(int argc, char **ar