【PS】使用PowerShell创建WinForm程序(转载)
2010-01-27 22:25
826 查看
Windows PowerShell最突出之处便在于.NET类库的支持,很大的扩展了脚本的能力。这使我们能直接在脚本中通过System.Windows.Forms程序集来创建窗口。
今天初次尝试了一下在PowerShell下创建WinForm程序,将完成的这个简单的例子分享给大家。
如同在C#编写WinForm程序中一样,先创建一个Form类的实例,然后初始化:添加流式布局面板,在面板上加了一个文本框和一个按钮,给控件添加 必要的事件处理。当然使用C#的时候通常是VS自动为我们生成一个窗体类,并添加了一些成员和初始化工作的代码。不过ps貌似还没有支持WinForm的 IDE。
在Form对象创建完毕之后我们就可以把它显示出来了。先使用Application类启用视觉效果,再用Application.Run(Form)方法显示窗口,启动消息循环。
Application.Run()可以为我们正确处理窗口的消息循环,在Run()方法外自行Show窗口会让窗口一闪而过。
因为代码比较简单,熟悉c# WinForm编程的同学应该能一目了然,所以不再做详细说明。
需要注意的是ps使用反射动态加载程序集的方法和ps中事件的处理方式。
代码
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$app=[System.Windows.Forms.Application]
$myForm=new-object System.Windows.Forms.Form
$myForm.Text="my window"
$button1 = new-object System.Windows.Forms.Button
$button1.Size = new-object System.Drawing.Size -argumentlist 75, 23
$button1.Text = "点我试试"
$textbox1=new-object System.Windows.Forms.TextBox
$textBox1.Multiline = $true;
$textBox1.Text = "hello world"
$textBox1.Size = new-object System.Drawing.Size -argumentlist 281, 227
$flowLayoutPanel1 = new-object System.Windows.Forms.FlowLayoutPanel
$myForm.Controls.Add($flowLayoutPanel1)
$flowLayoutPanel1.Controls.Add($textBox1);
$flowLayoutPanel1.Controls.Add($button1);
$flowLayoutPanel1.Dock = "Fill"
$flowLayoutPanel1.FlowDirection = "TopDown"
$button1ClickEventHandler = [System.EventHandler] {
[System.Windows.Forms.MessageBox]::Show("Hello world!")
}
$button1.Add_Click($button1ClickEventHandler)
$app::EnableVisualStyles()
$app::Run($myForm)
执行效果如下图:
今天初次尝试了一下在PowerShell下创建WinForm程序,将完成的这个简单的例子分享给大家。
如同在C#编写WinForm程序中一样,先创建一个Form类的实例,然后初始化:添加流式布局面板,在面板上加了一个文本框和一个按钮,给控件添加 必要的事件处理。当然使用C#的时候通常是VS自动为我们生成一个窗体类,并添加了一些成员和初始化工作的代码。不过ps貌似还没有支持WinForm的 IDE。
在Form对象创建完毕之后我们就可以把它显示出来了。先使用Application类启用视觉效果,再用Application.Run(Form)方法显示窗口,启动消息循环。
Application.Run()可以为我们正确处理窗口的消息循环,在Run()方法外自行Show窗口会让窗口一闪而过。
因为代码比较简单,熟悉c# WinForm编程的同学应该能一目了然,所以不再做详细说明。
需要注意的是ps使用反射动态加载程序集的方法和ps中事件的处理方式。
代码
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$app=[System.Windows.Forms.Application]
$myForm=new-object System.Windows.Forms.Form
$myForm.Text="my window"
$button1 = new-object System.Windows.Forms.Button
$button1.Size = new-object System.Drawing.Size -argumentlist 75, 23
$button1.Text = "点我试试"
$textbox1=new-object System.Windows.Forms.TextBox
$textBox1.Multiline = $true;
$textBox1.Text = "hello world"
$textBox1.Size = new-object System.Drawing.Size -argumentlist 281, 227
$flowLayoutPanel1 = new-object System.Windows.Forms.FlowLayoutPanel
$myForm.Controls.Add($flowLayoutPanel1)
$flowLayoutPanel1.Controls.Add($textBox1);
$flowLayoutPanel1.Controls.Add($button1);
$flowLayoutPanel1.Dock = "Fill"
$flowLayoutPanel1.FlowDirection = "TopDown"
$button1ClickEventHandler = [System.EventHandler] {
[System.Windows.Forms.MessageBox]::Show("Hello world!")
}
$button1.Add_Click($button1ClickEventHandler)
$app::EnableVisualStyles()
$app::Run($myForm)
执行效果如下图:
相关文章推荐
- 转载 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一&二)——初识WiX
- [转载]DrawMe - 使用WPF/WCF创建的网络白板聊天程序
- 使用Powershell创建一个带GUI程序:英语阅读翻译器
- 转载:使用win pe模式安装win7的时候出现“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示
- 【转载】C# WinForm程序中使用Unity3D控件
- 【转载】使用ObjectARX 2005+Visual Studio.NET 2003创建ARX程序
- 调用dll给winform程序创建所有用户均可使用的快捷方式
- 【详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!】【一】(转载)
- 使用Caliburn.Micro创建简单的WPF程序
- 使用c#创建一个可以监视全局鼠标位置的程序
- 使用blend2 september preview 来为Silverlight程序创建动画资源
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- 使用WIN32 API CreateProcess()以无窗口方式创建DOS程序
- 使用PowerShell 创建SharePoint 站点
- (转载)在WinForm中使用GMap.Net地图插件
- 在Docker Toolbox 终端中使用 vboxmanage.exe 程序在宿主机和虚拟机之间创建共享目录
- [转]C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 使用NetBeans C/C++ Pack 5.5 创建程序(二)
- 转载 BCS 的好文章 1 - 怎么创建和使用BCS
- 使用 Azure PowerShell 创建高级存储帐户