1

ユーザーに 2 つのオプションを提供する GUI が必要です。

  1. ユーザーが openFileDialog を介してロードしたキー ファイルを読み込みます。
  2. プリロードされたキー ファイルを読み込みます (ユーザーは 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 の提案に応じて):

  1. 「ルート名前空間」の意味について誤解していなければ、正しいと思います。プロジェクトの名前は「TM Decoder」なので、「TM_Decoder」がルート名前空間だと思います。これは正しくありませんか?
  2. ありがとうございます。ビルド アクションを「埋め込みリソース」に変更しました。以前は「なし」に設定されていました(私は知りませんでした)。残念ながら、これは問題を解決するのに十分ではありませんでした (デバッグ試行の結果に変更はありません)。
  3. リソース フォルダーにある項目についてはわかりません。それらは、プロジェクト フォルダ内の「resources」というフォルダにあります。つまり、TM Decoder --> Resources ではなく、TM Decoder --> Properties --> Resources です。これは、[Resources] タブからリソースを追加したときに、Visual Studio が自動的に行ったことです。プロジェクトのプロパティで。
4

1 に答える 1

2

TM_Decoder.Properties.Resources._7p1_HOB_Keyリソース名ではなく、実際の内容を含む文字列です。
"TM_Decoder.Resources._7p1_HOB_Key"リソース名です。

于 2012-04-09T16:14:33.980 に答える