我正在使用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());
}
}
答案 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
显然这是一个临时解决方案。享受!