小さなテストアプリケーションでComponentResourceManagerを使って遊んでいたのは、以前は手動で実装されていた既存の大きなWinformsアプリケーションで自動的に生成されたローカリゼーションを修正する必要があったからです。リソースファイルは、誰かがフォームデザイナーを開くたびに非表示になることはありません。resources.ApplyResources(...)not working - 思考?
このテストのために、フォームにはボタンコントロールがあります。私は、リソースファイルに格納されているものを使ってボタンのプロパティを設定したい。プロパティを探して直接設定すると、これはうまく動作します。
ResourceManager resourceManager = new ResourceManager("LocalizationTest1.buttonProps", typeof(Form1).Assembly);
button1.Text = resourceManager.GetString("button1.Text");
button1.Location = (Point)(resourceManager.GetObject("button1.Location"));
ただし、次のようにApplyResourcesを使用しようとすると機能しません。
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(Form1));
componentResourceManager.ApplyResources(this.button1, "button1");
また、リソース名button1.Textとbutton1.Locationの両方がリソースデザイナーでそれらの隣にthe resource name 'button1...' is not a valid identifier
を持っていることを関連している可能性があります。
これまでにオンラインで関連するものは何も見つかりませんでしたので、援助の可能性があると思っています。
私の場合、[それは動作します](https://stackoverflow.com/a/46017814/3110834)。結果を見るためにリソースを適用する前に、あなたは文化を変えましたか?あなたのフォームは[ローカライズ可能](https://stackoverflow.com/a/32990088/3110834)ですか? –
フォームはローカライズ可能です。なぜなら、私がCurrentUICultureを変更した場合に言語を適切なresxファイルに変更するためですが、プロパティを直接指定している場合のみです。すなわち、 'button1.Text = resourceManager.GetString(" button1.Text ");'。 ApplyResourcesを使用してオブジェクトをより広範に扱おうとしていません – Justin
[例](https://stackoverflow.com/a/46017814/3110834)で共有したコードを試しましたか? –