[英]Windows Form Application using Codedom C#
我正在尝试通过 Codedom 生成 Windows 申请表。 我找到了一个很好的示例,向我展示了如何为控制台应用程序执行此操作,但我似乎无法使其适用于 Windows 表单。
这是我到目前为止所拥有的:
CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
string Output = "Out.exe";
Button ButtonObject = (Button)sender;
textBox2.Text = "";
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
//Make sure we generate an EXE, not a DLL
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, textBox1.Text);
Textbox1.text 包含以下内容:
Public Class Form1: Form
{
}
我真的不知道还能放什么......我对这些东西很陌生,我似乎无法理解我遇到的文章。
如果您是 CodeDom 的新手,我强烈建议您使用Linq2CodeDom ,它允许您在表达式中编写代码,稍后将通过 CodeDom 转换为 VB 或 C# 代码。 使用这个库,您可以编写如下内容:
public void Generate()
{
var c = new CodeDomGenerator();
c.AddNamespace("Samples")
.AddClass("Form1")
.AddMethod(MemberAttributes.Public | MemberAttributes.Static, ()=>"YourMethodName", Emit.stmt(() => MessageBox.Show("Method Body")));
}
假设您现在实际上能够创建 EXE(因为您在Form1
声明中缺少一些using
语句),我将首先添加入口点 static Main
方法,该方法创建并显示一个新的Form1
实例:
using System;
using System.Windows.Forms;
public class Form1 : Form
{
public static void Main(string[] args)
{
var form1 = new Form1();
Application.Run(form1);
}
}
当您运行生成的 EXE 时,至少应该会出现 window。 @soandos 也有一个好处,您应该能够从在 Visual Studio 中创建表单时创建的源中复制和粘贴,尽管您应该记住 VS2008+ 使用部分类,因此您需要结合 Form1.cs 的内容和Form1.Designer.cs。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.