ユーザーに 2 つのオプションを提供する GUI が必要です。
- ユーザーが openFileDialog を介してロードしたキー ファイルを読み込みます。
- プリロードされたキー ファイルを読み込みます (ユーザーは radioButtons を使用して選択します)。
これは、ユーザーがすべてのキー ファイルを持ち歩く必要がないという点で役立ちますが、新しいキー ファイルを追加する必要がある場合でも柔軟に対応できます。
私のコードは現在、オプション #1 で動作しています。私が使う:
readFile = new StreamReader(KeyFileFullPath);
ここで、KeyFileFullPath は、openFileDialog によって定義されたキー ファイルへのファイル パスです。
オプション #2 に同じ streamReader を使用したいのですが、リーダーをリソース ファイルに向けるのに問題があります。
この質問から、次のことを試みました。
_assembly = Assembly.GetExecutingAssembly();
readFile = new StreamReader(_assembly.GetManifestResourceStream(TM_Decoder.Properties.Resources._7p1_HOB_Key));
C# のオートコンプリートを使用して ..."_7p1_HOB_Key" に移動したので、実際に存在するものを指していると思います。ただし、コードを実行しようとすると、次のエラーが発生します。
「値を null にすることはできません。パラメータ名: ストリーム」
これをもとにManifestResourceNamesを調べてみたのですが、「TM_Decoder.Form1.resources」と「TM_Decoder.Properties.Resources.resources」しかありませんでした。
これらはどちらも、プロジェクトのリソースにロードしたキー ファイルを実際には指していません。
streamReader がリソース テキスト ファイルを指すようになるまで、ご協力をお願いいたします。
編集 (SLaks の提案に応じて):
- 「ルート名前空間」の意味について誤解していなければ、正しいと思います。プロジェクトの名前は「TM Decoder」なので、「TM_Decoder」がルート名前空間だと思います。これは正しくありませんか?
- ありがとうございます。ビルド アクションを「埋め込みリソース」に変更しました。以前は「なし」に設定されていました(私は知りませんでした)。残念ながら、これは問題を解決するのに十分ではありませんでした (デバッグ試行の結果に変更はありません)。
- リソース フォルダーにある項目についてはわかりません。それらは、プロジェクト フォルダ内の「resources」というフォルダにあります。つまり、TM Decoder --> Resources ではなく、TM Decoder --> Properties --> Resources です。これは、[Resources] タブからリソースを追加したときに、Visual Studio が自動的に行ったことです。プロジェクトのプロパティで。