启动我的程序解决方案,打开文件 - >右键单击 - >打开with->我的程序(或我的程序解决方案)

时间:2015-10-20 18:57:39

标签: c# windows forms

我正在使用C#在Microsoft的Visual Studio 2015中进行编程。

我正在尝试创建一个Windows窗体应用程序,用于打开简单的.txt或其他类型的文件,然后编辑它们。

但重点是我要打开我的程序:右击.txt文件 - >打开 - >我的程序。

我的问题是,如果我只有我的程序的解决方案文件,我应该怎么做? 当我的程序已经运行时,关于打开.txt文件,我真的不在乎。我希望能够像我之前提到的那样启动它。

我正在使用这个程序作为起点,下次我将能够制作一个简单的MP3播放器,等等。据我所知,人们通常不会启动MP3播放器程序,然后是他们想要播放的mp3播放器文件。我希望能够阐明我想要实现的目标。

我一直在寻找解决方案,但我找不到它。 也许它真的很容易,但对我来说,现在,事实并非如此。感谢您的帮助。

我的Program.cs看起来像这样:

static void Main(string[] args)
        {
            //with args(user open file with the program)
            if(args != null && args.Length > 0)
            {
                string fileName = args[0];
                //check file exists
                if (File.Exists(fileName))
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);

                    Form1 MainForm = new Form1();
                    MainForm.OpenFile(fileName);
                    Application.Run(MainForm);
                }
                //the file does not exist
                else
                {
                    MessageBox.Show("The file does not exist!", "Error!",     MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
            }
            //without args
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }

3 个答案:

答案 0 :(得分:0)

在表单中添加一个按钮1(或根据需要更改它)并添加以下逻辑 无论您打开什么文件,以下逻辑都将使用您的系统默认程序打开它们,而无需进一步询问。

顺便说一句,Form1没有OpenFile方法,你可能从某个地方得到它。您可以删除它或添加方法定义   <击> MainForm.OpenFile(文件名);

{{1}}

如果这不是您要执行的操作,则可能必须写入Registry以进行文件关联。我在上面的评论中给出了链接。

答案 1 :(得分:0)

如果您正在询问如何处理打开文件,请尝试以下操作:

- 在Form1.cs中,通过添加另一个定义来重载构造函数。

public Form1(string fileName)
{
    InitializeComponent();
    openFileNow(fileName);
}

创建openFileNow方法(async for extra goodness)

private async void openFileNow(string fileName)
    {
        try
        {
            if(fileName.EndsWith(".txt"))
            {
                //Obviously you'll do something different with an .mp3
                using (StreamReader reader = new StreamReader(fileName))
                {
                    txtEditBox.Text = await reader.ReadToEndAsync();
                }
            }
            else
            {
                MessageBox.Show("Can't open that file.");
            }
        }
        catch (IOException e)
        {
            Console.WriteLine(e.Message);
        }
    }

- 简单地编写你的Program.cs:

static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Form1 MainForm;

        if (args != null && args.Length > 0)
        {
            MainForm = new Form1(args[0]);
        }
        else
        {
            MainForm = new Form1();
        }

        Application.Run(MainForm);

    }

在Visual Studio中,在项目的属性下,您可以在&#34; Debug&#34;中添加命令行参数。部分。

如果要将文件扩展名与应用程序相关联,请在注册表中执行此操作。你可以在C#中完成它,但是ClickOnce设置会更加清晰。

转到您的项目属性 - &gt;发布 - &gt;选项 - &gt; FileAssociations

修改 - 请注意,如果您打算使用ClickOnce发布,则需要在Program.cs中更改几行:

string fileName = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
        if (fileName != null && fileName.Length > 0)
        {
            MainForm = new Form1(fileName);
        }

答案 2 :(得分:0)

如果您只是想调试文件关联,请尝试右键单击.txt文件,打开方式...(更多选项)并从项目的调试文件夹导航到.exe,即:

C:\ VS Projects \ MyProject \ MyProject \ bin \ Debug \ myProgram.exe

显然这是一个临时解决方案。享受!