1

WinFormsでテキストエディタを開発しました。こちらからダウンロードしてご利用いただけます。正常に動作します。しかし、Windowsエクスプローラーでテキストファイルを右クリックして開こうとすると、表示されません。Webでこれの解決策を検索しましたが、失敗しました。これに対する解決策を提案できますか。または、RichTextBoxを使用する必要があります。RichTextBoxまた、を使用して簡単なテストプロジェクトを作成しようとしましたLoadFile()

// Load the contents of the file into the RichTextBox.
richTextBox1.LoadFile(openFile1.FileName, RichTextBoxStreamType.RichText);

これにより、ファイル形式エラーが発生しました。

4

3 に答える 3

1

問題は、以下を使用することです。

richTextBox1.LoadFile(openFile1.FileName, RichTextBoxStreamType.RichText);

リッチテキスト形式(RTF)ファイルを選択する必要があるため、通常のテキストファイルをロードするとファイル形式エラー(ArgumentException)が発生するためです。したがって、次の方法でロードできます。

string[] lines = System.IO.File.ReadAllLines(openFile1.FileName);
richTextBox1.Lines = lines;
于 2012-11-14T11:59:30.327 に答える
1

コメントと提供されたコードに基づいて、Windowsからファイルを開かないようにします。

Windowsがファイルをプログラムに送信して開くと、ファイルは最初のパラメータとしてexeに送信されますnotepad.exe C:\Users\Sean\Desktop\FileToOpen.txt

Environment.CommandLineまたはを使用して引数を取得する必要がありますEnvironment.GetCommandLineArgs()

詳細については、こちらを参照してください:コマンドライン引数をWinFormsアプリケーションに渡すにはどうすればよいですか?

フォームのLoadイベントでこれを処理し、引数を関数に渡します。

string filename = Environment.GetCommandLineArgs()[0];
richTextBox1.LoadFile(filename, RichTextBoxStreamType.RichText);
于 2012-11-14T14:00:16.377 に答える
1

問題を解決しました。ご協力いただきありがとうございます。
同様の問題に直面している将来の助けのために答えを追加しています。
解決策は次のとおりです。

Form_Load()から次のメソッドを呼び出します。

public void LoadFileFromExplorer()
{
   string[] args = Environment.GetCommandLineArgs();

   if (args.Length > 1)
   {
     string filename1 = Environment.GetCommandLineArgs()[1];
     richTextBox1.LoadFile(filename1, RichTextBoxStreamType.PlainText);
   }
}

これを機能させるには、Main()を変更します。

static void Main(String[] args)
    {
        if (args.Length > 0)
        {
            // run as windows app
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
        else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
于 2012-11-14T14:46:41.157 に答える