2014-09-19 1 views
0

Итак, моя winform связана с пользовательским форматом файла (.abc). Как это сделать, чтобы, если щелкнуть text.abc, winform запускается и получает содержимое text.abc.Как добавить открытые и прочитанные текстовые файлы, связанные с моей WinForm?

Это просто передано в качестве аргумента?

+0

Если я правильно понимаю, что вам нужны две вещи здесь: 1. связывающих .abc файлов с вашей программой в Windows, и 2. зная как получить имя файла после запуска вашей программы. Я прав? Или это только второй пункт? –

+0

Это больше вторая часть. Как только файл щелкнут и запущена связанная с ним программа, как эта программа получает информацию о файле? Извините за двусмысленность. – MK3GTX

ответ

1

Прежде всего, необходимо зарегистрировать расширение пользовательского файла, посмотрите на это сообщение:

Associate File Extension with Application

Затем внутри ваших окон приложение, которое вы можете прочитать аргументы командной строки, как это:

private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach (var item in Environment.GetCommandLineArgs()) 
     { 
      Debug.WriteLine(item); 
     } 
    } 
+0

Спасибо! Это именно то, что мне нужно было знать. – MK3GTX

1

Если вы правильно зарегистрировали приложение для определенного расширения, тогда, если пользователь дважды щелкнет файл с этим расширением, SO вызывает ваше приложение и передает аргумент командной строки с двойным щелчком имени файла. Структура также инициализирует свойство Environment.CommandLine с переданной командной строкой. Вы можете получить это свойство всюду в своей программе или использовать массив Environment.GetCommandLineArgs. Просто помните, что этот массив имеет первый элемент, равный имени вашей программы, и аргументы начинаются со второго элемента.

Вы должны написать главную точку входа с аргументами, как в консольном приложении

static void Main(string[] args) 
{ 
    if(args.Length > 0) 
    { 
     // command line passed 
     string fileToProcess = args[0]; 
     if(Path.GetExtension(fileToProcess) == ".abc") 
     { 
      // Whatever 
     } 

    } 
} 
+0

Отлично! Это именно то, что я хотел знать. Спасибо за ваш ответ, но мне придется дать Грегору «принятый ответ», поскольку он избил вас примерно на 30 секунд. – MK3GTX

Смежные вопросы