如何显示表格并继续

本文关键字:表格 继续 显示 何显示 | 更新日期: 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+正在运行