2012-04-23 5 views
0

私は、ユーザーが日付を選択できるカスタムComboBoxを作成しています。カレンダーの表示はローカライズされており、組み込みのものは望ましくない[here]を参照してください。私は、ルックアンドフィールまたは既存のコンポーネントを反映するUIコントロールが必要です。カスタムDateTimePicker:一貫したルック・アンド・フィールを得る

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

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

ご協力いただきありがとうございます。

答えて

0

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

関連する問題