Делаю программу на Windows Forms, которая работает с файлами определённого расширения. При старте открывается диалоговое окно, где я выбираю нужный файл. Появилась идея сделать работу с файлами более одобной. При двойном клике на файл открывать его сразу в моей программе (кликнул на файл -> запустилась моя програ с уже открытым этим файлом). В Windows указал, что для таких файлов запускать мою программу. Вопрос как сделать чтобы запусченая программа получала этот файл для работы с ним, а не требовалось самому его искать?
Program.cs
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//с аргументами (пользователь открыл файл с помощью программы)
MainForm f = null;
if (args != null && args.Length > 0)
{
string fileName = args[0];
//Существует ли файл?
if (System.IO.File.Exists(fileName))
{
f = new MainForm (fileName);
}
//Файл не существует :(
else
{
MessageBox.Show("File does not exist!", "Error!",
MessageBoxButtons.OK, MessageBoxIcon.Error);
f = new MainForm();
}
}
//без аргументов
else
{
f = new MainForm();
}
Application.Run(f);
}
}
Главная форма MainForm.cs
public MainForm()
{
InitializeComponent();
}
public MainForm(string filename)
{
InitializeComponent();
openFile(filename);
}
private openFile(string filename)
{
//ваша логика для открытия файла
}
Если нужна ещё и возможность перетаскивания файлов на форму, нужно завести обработчики событий DragEnter и DragDrop
void MainForm_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (isFileValid (files[0]))
{
e.Effect = DragDropEffects.Copy;
}
}
}
void MainForm_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (isFileValid(files[0]))
{
e.Effect = DragDropEffects.Copy;
openFile(files[0]);
}
}
private bool isFileValid(string filename)
{
//Проверяем, что можем принять такой файл
// например, просто по расширению
return Path.GetExtension(filename) == ".myextension";
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Столкнулся с трудностью, нужно экспортировать таблицу из excel файла в wordМожет кто подсказать, как это реализовать? (может быть у кого нибудь...
Есть папка, в ней 5 txt файлов, задача софта чтобы он искал строку во всех файлах(пусть показывает файл и строку, которую нашел), пока что у меня...
Я использую SSG, WinForm, NET для DesktopСтолкнулся со следующими проблемами: