[解決済み] 列挙型のコンボボックスで、列挙型の値に独自の文字列フォーマットを適用するにはどうすればよいですか?
2022-06-06 19:31:14
質問
投稿の中で
列挙型 ToString
の記事では、カスタム属性の
DescriptionAttribute
をこのように使用します。
Enum HowNice {
[Description("Really Nice")]
ReallyNice,
[Description("Kinda Nice")]
SortOfNice,
[Description("Not Nice At All")]
NotNice
}
そして、関数を呼び出して
GetDescription
のような構文を使って
GetDescription<HowNice>(NotNice); // Returns "Not Nice At All"
しかし、それでは本当に
を呼び出すように ComboBox を強制できないので、ComboBox に単に列挙型の値を入力したい場合、これは本当に役に立ちません。
GetDescription
.
私が欲しいものは、次のような要件があります。
-
読書
(HowNice)myComboBox.selectedItem
を読み込むと、選択された値がenum値として返されます。 -
ユーザは、列挙値の名前だけでなく、ユーザフレンドリーな表示文字列を見る必要があります。そのため、" を見るのではなく
NotNice
と表示される代わりに、"Not Nice At All
"と表示されます。 - うまくいけば、このソリューションは、既存の列挙に対する最小限のコード変更を必要とします。
明らかに、私は作成する各列挙体のために新しいクラスを実装し、その
ToString()
をオーバーライドすることもできますが、それは各列挙体のための多くの作業であり、私はむしろそれを避けたいのです。
何かアイデアはありませんか?
ヘック、私はさらに ハグ を懸賞金として差し上げましょう:-)
どのように解決するのですか?
指定された属性を読み込んでリソースを検索するTypeConverterを書くことができる。そうすれば手間をかけずに表示名の多言語対応ができるだろう。
TypeConverterのConvertFrom/ConvertToメソッドを調べて、enumの属性を読み取るためにリフレクションを使う。 フィールド .
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] String型のenumを列挙する方法は?
-
[解決済み] Enumの値の属性の取得
-
[解決済み】Enum値をStringリテラルとして使用する場合
-
[解決済み] Java enum - 名前の代わりにtoStringを使用する理由
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み] 関数を終了するには?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] ユーザーフレンドリーな文字列を持つEnum ToString