私は、ユーザーが日付を選択できるカスタムComboBox
を作成しています。カレンダーの表示はローカライズされており、組み込みのものは望ましくない[here]を参照してください。私は、ルックアンドフィールまたは既存のコンポーネントを反映するUIコントロールが必要です。カスタムDateTimePicker:一貫したルック・アンド・フィールを得る
- を描か
ComboBox
ボタンでTextBox
を使用する:私はComboBoxRenderer.DrawDropDownButton
を使用してみましたが、ルックアンドフィールは、既存のUIコントロールを反映していないここに私が試したと私が遭遇した問題きたものです。特に、我々はApplication.EnableVisualStyles()
を持っていないので、ボタンはWindows 98のルックアンドフィールを持っています。ComboBoxRenderer
はグレーのグレーのボタンを描きます。 ComboBox
とToolStripDropDown
を使用してカレンダーコントロールを含めると、ボタンのルックアンドフィールが適切ですが、ドロップダウンボックスを完全に非表示にすることはできません。ToolStripControlHost
はドロップダウンボックスを効果的に隠していますが、ボタンをクリックすると、ToolStripDropDown
が表示される直前にドロップダウンボックスが表示されます。私は効果的にドロップダウンボックスを無効にする回避策を試みましたが、あなたが望むように、ボタンは希望の視覚状態が押されたままではありません(ボタンを描くと、上記の問題に戻ります)。OnMeasureItem
のドロップダウンボックスの高さを0に設定すると機能しません。私はドロップダウンボックスをカレンダーのUIセレクターと同じ高さにしてレンダリングが特に悪く見えないようにすることができます。
必要な動作を得るための既存のメカニズムがあります:TextBox
ドロップダウン矢印ボタンで選択した日付を表示し、クリックするとカレンダーUI選択コンポーネントが表示されます。カレンダーコンポーネントは既に存在し、ボタンは既存のWindows 98ルックアンドフィールのように見える必要がありますComboBox
ボタン。
ご協力いただきありがとうございます。