4

Visual Studio 2008 のプロジェクトには自動生成されたリソース ファイルがいくつかあり、ローカライズされたバージョンがいくつかあります。これらのローカライズされたバージョンの 1 つに、この場合は空の文字列があります。

より明確に。多くの文字列リソースを含むコア リソース ファイルがあります。次に、このファイルの他の 4 つのローカライズ バージョンがあり、これらの他のローカライズ ファイルの 1 つで、文字列の 1 つに空の値が指定されています。

ここでの問題は、フォーム デザイナーが文字列のリソースを見つけたことに非常に満足しており、フォームの生成されたデザイナー コードでプロパティを割り当てる空の文字列に対してこのリソースを再利用するために明らかに何もしないことです。

たとえば、何らかの理由でコントロールのプロパティがデフォルト値で指定されていない場合 (そのため、空であってもコードにシリアル化されます)、空の文字列リテラルをC# コード。

問題は、ローカライズされたバージョンを参照していて、これらがコードにコンパイルされていないことです。

簡略化されたコード例を次に示します。

this.rpAllFields.KeyTip = 
  global::namespaces.SystemMessagesResources_sv_SE.
    dash_red_shift_info_description;

この場合、 にdash_red_shift_info_descriptionは sv-SE ロケールの値がないため、デザイナーは、コード内に空の文字列を見つけると、そのリソースへのリンクを試みます。しかし、SystemMessagesResources_sv_SE は既存のクラスではなく、クラスにコンパイルされたSystemMessagesResources リソース ファイルのスウェーデン語ローカライズ バージョン用に生成されたクラス名のようです。

これを回避することは可能ですか?フォームファイルで何かを変更するたびに、検索/置換にかな​​りうんざりしています。これを実現するために行った、額を平手打ちしたことがあると確信していますが、明らかに、自分でこの原因を見つけることができません。

リソースを削除すると、上記のコードは次のようになります。

this.rpAllFields.KeyTip = "";
4

4 に答える 4

2

リソース ファイル内の空の文字列が原因で問題が発生している場合、それをスペースにするとどのような影響がありますか。そのため、リソース ファイルには "" の代わりに " " が含まれます。それが最善の解決策かどうかはわかりませんが、デザイナーがそのリソースをデフォルトの空の文字列として使用できなくなるかどうか知りたいです。しかし、それがどのように使用されているのかわからないため、未定義のはずの値をスペースとして定義することの影響はわかりません...

于 2009-01-28T02:38:56.803 に答える
2

すべてのロケールに対して "" として定義された文字列リソース empty_string を作成してみてください。これを最初のリソースにすると、フォーム デザイナーは (願わくば) フォーム全体に散りばめる値として常にそのリソースを選択します。このようにして、少なくともその目的のために指定された文字列を使用することになります。

于 2009-01-28T19:07:35.747 に答える
0

生成されたリソース ファイルとコード サンプルがよいでしょう。

そして、あなたが言っているのは、名前空間 (最初に見つかったもの) に空の文字列リテラル定義がありますが、それが問題を引き起こしているということですか? いつでも空いてますよね?コードをコンパイルすると、スペースを節約するためにこのような奇妙なことが行われます。アセンブリ ファイルのオンザフライ自動ビルド用のコード ビハインドを使用して XAML ファイルを生成するときに、同様の問題に遭遇しました。 (他の場所で使用されていました)。

これを回避するために、名前空間でこれらのプリミティブに名前付きの型を使用し、それをグローバルにしました。ここに表示されるのは、グローバル名前空間が空白を埋めていることです。すべてのヌル文字列を評価する「下」の名前空間が必要になる場合があります。

私はこれを 1 年以上扱っていないので、言葉遣いが悪い場合はご容赦ください。プロパティで名前空間を明示的に使用するか、それらを下位に割り当てる必要があります (xaml の添付プロパティのように)。

これが役立つことを願っています(そして理にかなっています)

于 2009-01-27T15:23:40.583 に答える
0

値が空の文字列であるリソースはどれくらい必要ですか? サポートされている言語の一部で、一部のリソース キーが空白に対応する多言語シナリオを想像できます (一部の UI 要素に文字列連結を使用している場合)。

しかし、私のシナリオがこのようなものではない場合、リソース エントリを空の文字列で破棄します。「とにかく、どのスタンドアロン UI テキストが空白に変換されますか?」と言うだけです。

場合によってはリソースを空白にする必要が本当にある場合 (ある言語の記事を表し、別の言語には同等の単語が存在しない場合)、別の方法で同じ効果を生み出すことができるかどうかを確認します。

于 2009-01-27T15:15:56.683 に答える