繁体   English   中英

Windows 表单应用程序使用 Codedom C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM