如何显示表格并继续
本文关键字:表格 继续 显示 何显示 | 更新日期: 2023-09-27 18:20:12
我正在尝试制作一个包含2个Form类的控制台应用程序。每个Form只有一个实例,这就是我将该实例存储在静态类中的原因。
目标
- 它做一些处理
- 在此期间,它可以创建并显示一个窗体,然后立即继续处理(在此期间,可以创建并展示另一个窗体)
- Main函数通过调用Form的函数与其中一个Form中的picturebox进行交互
- 我希望应用程序在Main函数结束时简单地结束/终止
问题
这几乎是有效的,除了表单似乎"忙于"其他事情:
- 将鼠标悬停在上面显示"忙"光标
- 我也移不动表格
尝试
- Application.Run(newForm1())似乎将控制权移交给了Form。但我希望它在Main函数中继续(正如我所提到的)
代码
下面是一个使用两种表单中的一种的示例:
主要功能:
using System.Threading;
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// processing
FormData.form.InvokeDraw();
Thread.Sleep(10000); // simulate further processing
}
}
静态类:
class FormData
{
public static Form1 form;
static FormData()
{
form = new Form1();
form.Show();
}
}
形式:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void InvokeDraw()
{
pictureBox1.Invoke((MethodInvoker)Draw);
}
public void Draw()
{
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.FillEllipse(new SolidBrush(Color.Black), 0, 0, bmp.Width, bmp.Height);
}
pictureBox1.Image = bmp;
pictureBox1.Update();
}
}
编辑:
我正在做翻译。用户可以将程序加载为文本文件。其中一些程序可以包含绘制某些内容的命令。写入控制台也是这些命令之一。在什么都没画的情况下展示形式似乎是不对的。这就是为什么它是一个控制台应用程序
在您的解决方案上创建一个新的Windows窗体项目并添加您的窗体。
要运行新的exe文件,请使用Proccess类
if (IsWindowsFormsAppRunning() == false)
System.Diagnostics.Process.Start(@"Path'windowsFormApp.exe");
private static bool IsWindowsFormsAppRunning()
{
//update this function
return false;
}
有很多方法可以检查应用程序是否已经在运行,有些简单,有些更高级。如果你检查这个链接,你会发现一种很容易做到这一点的方法
https://www.google.gr/?gfe_rd=cr&ei=iAYCVLLQN-bc8gf6_IHoDA&gws_rd=ssl#q=c%23+check+if+application+is+正在运行