关闭窗口表格?

时间:2014-08-05 09:57:12

标签: c# .net winforms

我正在处理C#窗口表单,在我的应用程序中,我试图在页面加载事件中使用c#窗口表单执行过程。我正在尝试,在执行该过程时,表单应该显示,之后表单应该自动关闭。我的代码就像这样

 public partial class Form1 : Form
{

    string servername = "";
    string database = ""; string password = ""; string Filepath = ""; string uid = "";
    string reslt = "";
    public Form1()
    {
        InitializeComponent();
        GetExelData();

    }

  private void Form1_Load(object sender, EventArgs e)
    {
        this.Close();
    }

 }

但是由于我的代码窗口窗体没有显示,所以在执行方法时它会关闭。你能救我吗?

4 个答案:

答案 0 :(得分:1)

将GetExcelData()移动到Form1_Load处理程序。 (Shown处理程序可能更好)

这样,当表单显示时,将调用该方法。

在方法完成后关闭表单:

  • 使用事件或回调(如果可用)
  • 或在单独的线程上调用GetExcelData,并在线程完成时关闭表单

答案 1 :(得分:1)

试试这个: -

               private BackgroundWorker bw;
                private void Form1_Load(object sender, EventArgs e)
                {
                  bw = new BackgroundWorker();
                 bw.WorkerReportsProgress = true;
                 bw.DoWork += BwOnDoWork;
                 bw.WorkerSupportsCancellation = true;
                 bw.RunWorkerAsync();
                }

               private void BwOnDoWork(object sender, DoWorkEventArgs e)
               {
                 GetExelData();
                 bw.CancelAsync();
                 if (this.InvokeRequired)
                        {
                            this.Invoke(new EventHandler(delegate { this.Close(); }));
                        }
               }

答案 2 :(得分:0)

您可以尝试将GetExcelData调用移至加载事件:

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    GetExelData();
    this.Close();
}

表单加载仅在表单完全构造时发生。但请注意,即使我的改进,你正在尝试做的事情也没有意义。

关闭时的这个“延迟”只是因为该方法是在GUI线程上执行的(不好的做法)。你想要显示某种加载指示器吗?有更好的方法。

答案 3 :(得分:0)

使用Shown事件处理程序 首次显示表单后,将执行此事件(正如您所需)。

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    GetExelData();
}

private void Form1_Shown(object sender, EventArgs e)
{
    this.Close();
}