0

ComboBoxユーザーが日付を選択できるカスタムを作成しています。カレンダーの表示がローカライズされているため、組み込みがDateTimePicker望ましくありません [詳細については、こちらを参照してください]。ルック アンド フィールまたは既存のコンポーネントを反映する UI コントロールが必要です。これが私が試したことと私が遭遇した問題です:

  • TextBox描画されたComboBoxボタンでの使用: 使用してみましたComboBoxRenderer.DrawDropDownButtonが、ルック アンド フィールが既存の UI コントロールを反映していません。特にApplication.EnableVisualStyles()、ボタンは Windows 98 のルック アンド フィールを持っています。ComboBoxRenderer光沢のある灰色のボタンを描画します。
  • aComboBoxと aToolStripDropDownを使用してカレンダー コントロールを含めます。ボタンのルック アンド フィールは適切ですが、ドロップダウン ボックスを完全に非表示にすることはできません。はToolStripControlHostドロップダウン ボックスを効果的に非表示にしていますが、ボタンをクリックすると、 が表示される直前にドロップダウン ボックスがレンダリングされているのがわかりToolStripDropDownます。ドロップダウン ボックスを効果的に無効にする回避策を試しましたが、ご想像のとおり、ボタンが押されたという望ましい視覚的状態を維持しません (ボタンを描画すると、上記の問題に戻ります)。ドロップダウン ボックスの高さをゼロに設定しOnMeasureItemても機能しません。ただし、レンダリングが特に悪く見えないように、ドロップダウン ボックスをカレンダー UI セレクターと同じ高さにすることができると思います。

必要な動作を取得するための既存のメカニズムはありますか:TextBox選択した日付をドロップダウン矢印ボタンで表示し、クリックするとカレンダー UI 選択コンポーネントが表示されます。カレンダー コンポーネントは既に存在し、ボタンは既存の Windows 98 ルック アンド フィールComboBoxボタンのように見える必要があります。

お時間を割いていただき、ありがとうございました。

4

1 に答える 1

0

明確な解決策を見つけることができなかったので、回避策を実装しました:通常押された状態 (ホバー状態はありません)の Windows 98 スタイル ボタンのスクリーンショットを撮り、それらを画像リソース ( resxファイル内)。次に、現在のユーザー インタラクションに従って画像を描画します。これには、次のようないくつかの影響があります。ビジュアル スタイルへの変更はシームレスではなく、コントロールの高さが変更された場合、ボタンは他のComboBoxインスタンスのようにサイズ変更されません。

于 2012-05-10T10:44:41.443 に答える