如何将窗体添加到一个控制台应用程序,使用户可以选择文件?(How do I add a form t

2019-07-31 20:06发布

我创建了一个控制台应用程序,并有工作,我希望它的方式。 使用VS2010中的“添加项目”>“添加Windows窗体”选项,它会自动创建我需要什么。 我添加了一个按钮,代码检索Excel文件(如下图)我的问题是:

如何采取他们所创建的文件,并在我的Program.cs“主”区域使用它呢?

为打开文件对话框按钮单击事件中的代码,从Form1.cs的:

private void btnSelect_Click(object sender, EventArgs e)
{
OFD.openFileDialog OFD = new OpenFileDialog();
OFD.Multiselect = false;
OFD.Title = "Open Excel Document";
OFD.Filter = "Excel Document|*.xlsx;*.xls";
OFD.ShowDialog();
string docPath = OFD.FileName;
}

我的静态重头戏的那部分我想从Program.cs文件使“docPath”

static void Main(string[] args)
    {
        var excel = new ExcelQueryFactory();
        excel.FileName = @"C:\Users\Christopher\Desktop\BookData\TestResults.xls";
       <...code executed on opened excel file...>
     }

感谢您的时间。

这是我的完整的解决方案:

class Program
{
    [STAThread]
    static void Main(string[] args)
    {

        var excel = new ExcelQueryFactory();
        OpenFileDialog OFD = new OpenFileDialog();
        OFD.Multiselect = false;
        OFD.Title = "Open Excel Document";
        OFD.Filter = "Excel Document|*.xlsx;*.xls";
        OFD.ShowDialog();
        string filePath = OFD.FileName;
        excel.FileName= filePath.ToString();
        <.the rest of my program is below...>
    }  
}

Answer 1:

  1. 右键点击您的控制台应用程序,添加引用, System.Windows.Forms
  2. 添加using System.Windows.Forms; 你的文件的开头。
  3. 添加[STAThread]属性的Main ,使其与打开文件对话框兼容。

[STAThread]
public static void Main(string[] args)
{
    var dialog = new OpenFileDialog
                     {
                         Multiselect = false,
                         Title = "Open Excel Document",
                         Filter = "Excel Document|*.xlsx;*.xls"
                     };
    using (dialog)
    {
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            var excel = new ExcelQueryFactory { FileName = dialog.FileName };
            // code executed on opened excel file goes here.
        }
    }
}


文章来源: How do I add a form to a console app so that user can select file?