如何从Windows窗体访问和运行控制台应用程序,该窗体是同一项目的一部分.我有一个Windows窗体和一个控制台应用程序.我认为我可以发布控制台应用程序然后使用,Process.Start(path to console app)
但这不是我想要的.我想Main
在我的表单项目中访问和使用控制台应用程序的方法.只需单击一个按钮即可运行此方法.
这会产生以下错误.
InvalidOperationException未处理当任一应用程序没有控制台或从文件重定向控制台输入时,无法读取键.试试Console.Read.
private void buttonApplication_Click(object sender, EventArgs e)
{
Ch15Extra_2.Program.Main();
}
Run Code Online (Sandbox Code Playgroud)
这是方法.
ConsoleApp:
namespace Ch15Extra_2
{
public class Program
{
public static void Main()
{
Console.WriteLine("Here the app is running");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Form1中:
private void buttonApplication_Click(object sender, EventArgs e) { }
Run Code Online (Sandbox Code Playgroud)
如果您需要在没有WinForms应用程序的情况下运行您的控制台应用程序,有时您想在不运行控制台应用程序的情况下执行某些控制台代码,我建议您:
您可以将解决方案分为三个部分.
将dll链接到第一个项目和第二个项目.
然后,如果您需要从WinFomrs应用程序运行共享代码,您可以执行以下操作:
private void buttonApplication_Click(object sender, EventArgs e)
{
var shared = new SharedClass();
shared.Run();
}
Run Code Online (Sandbox Code Playgroud)
SharedClass
将在第三个项目中实施.你也可以从控制台应用程序调用它.
UPD
项目1:ClassLibrary.
public class SharedClass
{
public int DoLogic(int x)
{
return x*x;
}
}
Run Code Online (Sandbox Code Playgroud)
Proj 2. WinForms.参考项目1
使用共享;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
TextBox textBox = new TextBox();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var shared = new SharedClass();
textBox.Text = shared.DoLogic(10).ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
proj 3.控制台应用程序
public class Program
{
public static void Main()
{
Console.WriteLine("Here the app is running");
var shared = new Shared.SharedClass();
Console.WriteLine(shared.DoLogic(10));
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
我刚检查过 - 它有效.
归档时间: |
|
查看次数: |
7633 次 |
最近记录: |