Już na logikę i zdrowy rozsądek widać, że trzeba "powiedzieć programowi", co ma się stać z zawartością otwieranego w ten sposób pliku. Bo co w przypadku gdy mamy 2 TextBox'y - do którego powinna się wczytać treść pliku? Co jeśli nie chcemy prezentować użytkownikowi treści całego pliku a jedynie odpowiednie dane? Aplikacja nie domyśli się magicznie, że zawartość pliku ma się znaleźć w jakimś tam textBoxie - mimo iż może to jedyny komponent w całej aplikacji...
Otwieranie plików w taki sposób obsługuje się przez tablicę argumentów, którą otrzymujemy w głównej metodzie aplikacji: Main() dla konsoli, Application_Startup() dla WPF etc. można też użyć Environment.GetCommandLineArgs().
Otwieranie pliku za pomocą programu to tak na prwdę uruchomienie tego programu z argumentem w postaci ścieżki do otwieranego pliku.
Wystarczy chwilę poszukać w Internecie, żeby natknąć się na odpowiedź:
https://stackoverflow.com/questions/13331771/open-specific-files-with-my-c-sharp-application-like-opening-doc-files-with-w