コントロールを使用してToolStripDropDown
、カスタムComboBoxのようなコントロールのドロップダウン部分を実装しています。視覚的にアピールするためMaximumSize
に、ドロップダウンにを押し付け、その中のそれぞれの幅を手動で指定してToolStripButton
います-結果は、それをアクティブにするコントロールと同じ幅のポップアップであり、高さの高さにキャップが付いていますドロップダウン部分の。
例(簡略化):
ToolStripDropDown dropDown = new ToolStripDropDown();
dropDown.MaximumSize = new Size(200, 100);
dropDown.RenderMode = ToolStripRenderMode.System;
dropDown.AutoSize = true;
for (int i = 0; i < 50; i++) {
ToolStripButton dropDownItem = (ToolStripButton)dropDown.Items.Add("Item " + i);
dropDownItem.AutoSize = false;
dropDownItem.Size = new Size(200, 20);
}
dropDown.Show(owningControl, new Point(0, owningControl.Height - 1));
ご覧のとおり、ポップアップのサイズに制約がありますが、上下のスクロールボタンが表示されておらず、表示させる方法がないようです。ToolStripDropDown
スクロールオフセットまたは特定のアイテムをビューにスクロールするメカニズム(EnsureVisible()
onなど)に関しては、メソッドやプロパティが含まれていないようListViewItem
です。
それでは、どのようにしてドロップダウンをスクロールさせることができますか?スクロールバー、スクロールボタン、さらにはマウスホイールなど、どのような方法でも十分です。
(ちなみに、私はドロップダウン部分にを使用して同様のコントロールを作成しようと何度も試みForm
ました-ポップアップがフォーカスを奪ったり、コントロールがクリックされたときにフォーカスを取得したりするのを防ぐために何十もの解決策を試しましたが、これは行き止まりのようです。また、を使用することも除外されましたToolStripControlHost
。このホストコントロールは、それを開いたフォームからフォーカスを奪うことができます。)