最近これを検索しましたが、合理的な解決策が見つからなかったため、CSS のみで作成しました。ListBox から CheckBoxList に切り替えて、チェックボックスを非表示にしました。
この例では、単純にするために、すべての項目 (CSS のオプション) でチェックボックスを非表示にし、選択した項目 (CSS のラベル) の兄弟テキストのフォントの重みを 600 に設定しました。セレクターが正しく設定されています - 背景、疑似 :before 画像または境界線など。アイテムの前に何かを使用すると、スペースの問題が発生する可能性があることに注意してください。このオフセットを補うためにパディング/マージンを追加できます。これを行う方法はたくさんありますが、他のオプションを検討したくなるまでは、これで目的地にたどり着くことができます。
ASPX:
<asp:CheckBoxList ID="chkList" CssClass="someclassname" runat="server" </asp:CheckBoxList>
CSS:
.someclassname input {display: none;}
.someclasssname input:checked + label {font-weight: 600;}
個人的には CSS の改行とインデントを好みますが、ここではなくても読みやすいです。
これは、他のチェックされていない項目の CSS セレクターです。
CSS:
.someclass input:not(:checked) + label {font-weight: 400;}
繰り返しますが、チェックボックスを非表示にしてから、チェックボックスの右側のテキストをフォーマットしています。ここでのもう 1 つの優れた機能は、ユーザーがタッチ ベースの入力デバイスを使用して複数の項目を選択できるようになったことです。ctrl キーやスペース キーは必要ありません。
また、ListBox とは異なり、CheckBoxList ではユーザーの選択を 1 つに制限することはできません。この動作が必要な場合は、RadioButtonList に切り替えることができます。