2009-05-18 27 views
1

私の.designer.csファイルで定数文字列を参照するにはどうすればよいですか?C#designer.csコードで定数文字列を使用するには?

私の.csファイルにプライベート文字列変数を作成し、designer.csファイルを編集して文字列をハードコードするのではなく、この変数を使用することです。しかしデザイナーはこれが誤りを投げるのが好きではない。なぜこれがうまくいかないのか理解していますが、最良の選択肢が何であるか分かりません。

私のUIコントロールのそれぞれにプレースホルダとしてのテキストがあるだけであれば、実行時にすべてのテキストプロパティをオーバーライドする必要がありますか?このようにして、私はデザイナーのすべてを見る利点を失います。

私は、物事が将来変更されるときに、中断を最小限に抑える方法を理解しようとしています。ありがとう。

答えて

5

*.designer.*ファイルはVisual Studioによって生成されます。 Visual Studioでは時にはre - これらを生成して変更を消去する可能性がある場合を除き、手動で修正する必要はありません。

あなたが本当に必要とするのは、フォームデザイナーが利用できるようにするリソース定数を、コードを生成するときにそのリソースを使用するように考えることです。

これを実行するには、Visual Studioでいくつかの方法があります。おそらく最も簡単なのは、コントロールのデータバインドを介したものです。具体的には、ラベルコントロールをフォームに配置し、コントロールのプロパティを確認します。プロパティを名前でソートすると、リストの上部に括弧で囲まれた2つのプロパティ、ApplicationSettingsDataBindingsがあります。それらを下に引っ張ると、両方のラベルがラベルのTextプロパティにバインドするオプションを持つことがわかります。これらを使用すると、あなたのアプリケーションの設定ファイルに "定数文字列"を入れて、ApplicationSettingsプロパティまたはデータソースにバインドし、DataBindingsプロパティでバインドすることができます。フォームデザイナーが適切なコードを生成します。

+0

Joesが正しいです、実際には、デザイナーファイルを手動で変更すべきではありません! – Enyra

4

達成しようとしていることは完全にはわかりませんが、通常、文字列がすべてデザイナー.csファイルにハードコードされないようにするには、文字列がロードされるリソースファイルを使用しますスタートアップ時から。

フォームの "localizable"プロパティを "true"に設定した場合、すべてがリソース内で自動的に終了すると思います。一方、私はWindowsフォームの専門家からは遠いので、これをすべて稼働させるまで塩のこぶしですべてを取る。

+1

lol @「専門家から遠い」 – inspite

+1

私はWinFormsで私がかなり初心者だとは言わないが、私は実際に賢明な定義では熟練者ではない。 –

1

あなたはどのような問題を解決しようとしていますか?ローカリゼーションを実装しようとしている場合は、.NETに付属しているローカリゼーション機能と衛星アセンブリを見てください。

カスタマイズを解決しようとしている場合は、.NETで利用可能なカスタマイズオプションを設定エディタで確認してください。

なぜ定数文字列を使用する必要がありますか?

+1

私は多くのボタンとメニュー項目を持つフォームを持っています。私たちの製品のバージョンに基づいて、私はボタンの異なるセットを有効/無効にする必要があります。これが過去に行われた方法は、文字列(ボタン名)のリストを保持し、特定のボタンを有効/無効にする必要があるかどうかをチェックすることです。 定数文字列が.designer.csファイルに埋め込まれました。これは機能しますが、デザイナーは使用できなくなります。 – TheSean

+0

文字列にボタンの名前が含まれている場合、その定数文字列をプレースホルダとして使用する理由については説明していません。 –

1

2番目の方法が最適です。なぜならデザイナーはいつもあなたの変更を守り続けるつもりであると想定することはできないし、しばしばそれらを吹き飛ばすだけだからだ。 Page_Initイベントメソッドでコントロールの変更を行いたいと思っています。これにより、変更内容がデザイナーに表示される可能性があります。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx

あなたはあなたがコントロールするあなたの実際のコードビハインドクラスの定数を手にすると、コントロールは、あなたが望むように開始され、あなただけを変更したいものを制御することができますこの方法です。

更新:残念ながら、これはWinFormsであることを認識できませんでした。コントロールの初期化が呼び出された直後にコンストラクタにコントロールを登録するだけで、実際はWinFormsではさらに簡単です。

+0

ありがとう、しかし私はちょうどwinformsを使用しています。しかし、同様のイベントハンドラが必要です。私は、ユーザーコントロールがデザイナーでどのようにレンダリングされるかに精通しているわけではありませんが、私はそれを見ていきます。 – TheSean

+0

実際には、コントロールが初期化された後で、コンストラクタでそれを行うだけです。 –

関連する問題