dotnetmonitor.com |
|
||||||||||||
| Use RenderMode to pick between stock renderers.
Use ToolStrip.Renderer to assign a custom renderer. Ensure that RenderMode == ManagerRenderMode (default)
SampleForm 6 Custom Renderer Setting Renderer per toolstrip Setting Renderer per application
class Form6 : Form { ComboBox targetComboBox = new ComboBox();
public Form6() { // alter renderer at top level
// new toolstrip ToolStrip ts = new ToolStrip(); ts.Name = "ToolStrip"; ts.Items.Add("Apples"); ts.Items.Add("Oranges"); ts.Items.Add("Pears");
// new menustrip, with new window MenuStrip ms = new MenuStrip(); ms.Name = "MenuStrip"; ms.Dock = DockStyle.Top;
// add top level items ToolStripMenuItem fileMenuItem = new ToolStripMenuItem("File"); ms.Items.Add(fileMenuItem); ms.Items.Add("Edit"); ms.Items.Add("View"); ms.Items.Add("Window");
// add subitems to "File" fileMenuItem.DropDownItems.Add("Open"); fileMenuItem.DropDownItems.Add("Save"); fileMenuItem.DropDownItems.Add("Save As..."); fileMenuItem.DropDownItems.Add("-"); fileMenuItem.DropDownItems.Add("Exit");
// Add button to apply renderers Button applyButton = new Button(); applyButton.Text = "Apply Custom Renderer"; applyButton.Click += new EventHandler(applyButton_Click);
// Add combobox targetComboBox.Items.Add("All"); targetComboBox.Items.Add("MenuStrip"); targetComboBox.Items.Add("ToolStrip"); targetComboBox.Items.Add("Reset");
applyButton.Click += new EventHandler(applyButton_Click);
// Add TLP TableLayoutPanel tlp = new TableLayoutPanel(); tlp.Dock = DockStyle.Fill; tlp.RowCount = 1; tlp.ColumnCount = 2; tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent)); tlp.Controls.Add(applyButton); tlp.Controls.Add(targetComboBox);
// Add groupbox GroupBox gb = new GroupBox(); gb.Text = "Apply Renderers"; gb.Dock = DockStyle.Fill; gb.Controls.Add(tlp);
// Add groupbox to form this.Controls.Add(gb);
// Add toolstrip to controls collection this.Controls.Add(ts);
// Add menustrip to controls collection last - Z order! this.Controls.Add(ms); }
void applyButton_Click(object sender, EventArgs e) { ToolStrip ms = ToolStripManager.FindToolStrip("MenuStrip"); ToolStrip ts = ToolStripManager.FindToolStrip("ToolStrip");
switch (targetComboBox.SelectedItem.ToString()) {
case "Reset": ms.RenderMode = ToolStripRenderMode.ManagerRenderMode; ts.RenderMode = ToolStripRenderMode.ManagerRenderMode;
// default ToolStripManager.RenderMode = ToolStripManagerRenderMode.Professional; break;
case "All": ms.RenderMode = ToolStripRenderMode.ManagerRenderMode; ts.RenderMode = ToolStripRenderMode.ManagerRenderMode;
// default ToolStripManager.Renderer = new CustomProfessionalRenderer(); break;
case "MenuStrip": ms.Renderer = new CustomProfessionalRenderer(); break;
case "ToolStrip": ms.Renderer = new CustomProfessionalRenderer(); break; } }
void ChangeColors_Click(object sender, EventArgs e) { ToolStripManager.Renderer = new CustomProfessionalRenderer(); } }
class CustomProfessionalRenderer : ToolStripProfessionalRenderer { protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { if (e.Item.Selected) { using (Brush b = new SolidBrush(ProfessionalColors.SeparatorLight)) { e.Graphics.FillEllipse(b, e.Item.ContentRectangle); } } else using (Pen p = new Pen(ProfessionalColors.SeparatorLight)) { e.Graphics.DrawEllipse(p, e.Item.ContentRectangle); } }
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { Rectangle r = Rectangle.Inflate(e.Item.ContentRectangle, -2, -2);
if (e.Item.Selected) { using (Brush b = new SolidBrush(ProfessionalColors.SeparatorLight)) { e.Graphics.FillRectangle(b, r); } }
else using (Pen p = new Pen(ProfessionalColors.SeparatorLight)) { e.Graphics.DrawRectangle(p, r); } }
} |
||||||||||||
|
||||||||||||