C# の Winforms にドロップダウン メニューを用意し、メニュー項目の間にテキスト ラベルを配置したいと考えています。セパレーターと非常によく似ています。基本的に、メニュー項目をグループ化するオプションを検討しています。
どうすればそれを達成できるか考えていますか? 添付したいのはドロップダウンメニューです。
VS2010を使用していることを願っています
メニュー デザイナーで、区切りバーが必要な場所を右クリックし、[変換] -> [区切り] を選択します。
これも見てみたいかもしれません(フォームセパレーターについてですが、バージョンはVS2003です!) - Windowsフォームセパレーターコントロール
これを行うには多くの複雑な方法があると確信していますが、3つのステップであなたのニーズを満たすかもしれない方法を見つけました:
1.独自のToolStripItemを作成します。
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public sealed class CustomToolStripMenuItem : ToolStripMenuItem
{
public CustomToolStripMenuItem()
{
DisplayStyle = ToolStripItemDisplayStyle.Text;
BackColor = Color.LightSteelBlue;
ForeColor = Color.MidnightBlue;
Font = new Font(Font, FontStyle.Bold);
// Or other options to your liking
}
}
2.独自のレンダラーを作成します。
public class CustomeRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
{
if(e.Item is CustomToolStripMenuItem)
{
e.Graphics.FillRectangle(Brushes.LightSteelBlue, e.Item.ContentRectangle);
}
else
{
base.OnRenderMenuItemBackground(e);
}
}
}
3.アイテムを使用する:コンテキストメニューには、レンダラーを設定する必要があります。
RenderMode = ToolStripRenderMode.Professional;
Renderer = new CustomeRenderer();
コンテキストメニューで、CustomToolStripMenuItemを使用できるようになりました
以下のリンクが役立つ場合があります。