Можно ли изменить элемент управления BackColor ToolStripSeparator? В дизайнере есть свойство BackColor, но оно, похоже, не используется - цвет всегда белый.Изменить BackColor элемента управления ToolStripSeparator
ответ
По умолчанию рендеринг toolstrip
игнорирует свойство BackColor и использует жестко закодированные цвета.
Вы можете ссылаться на следующую ссылку, чтобы использовать собственный рендерер для рисования разделителей так, как вы хотите.
http://social.msdn.microsoft.com/forums/en-US/winforms/thread/6cceab5b-7e06-40cf-82da-56cdcc57eb5d
http://www.c-sharpcorner.com/uploadfile/mahesh/toolstrip-in-C-Sharp/
см выше ссылке. Надеюсь, это поможет!
Я вижу, вопрос был задан 2 года назад, но я все еще не могу найти простое и понятное решение для этого в Интернете. Итак ...
Я сегодня столкнулся с проблемой и обнаружил, что ее довольно просто решить.
Имея ту же ситуацию:
Решение:
Создать класс, который наследует ToolStripSeparator
класс и добавить метод к Paint
EventHandler
рисовать разделитель:
public class ExtendedToolStripSeparator : ToolStripSeparator
{
public ExtendedToolStripSeparator()
{
this.Paint += ExtendedToolStripSeparator_Paint;
}
private void ExtendedToolStripSeparator_Paint(object sender, PaintEventArgs e)
{
// Get the separator's width and height.
ToolStripSeparator toolStripSeparator = (ToolStripSeparator)sender;
int width = toolStripSeparator.Width;
int height = toolStripSeparator.Height;
// Choose the colors for drawing.
// I've used Color.White as the foreColor.
Color foreColor = Color.FromName(Utilities.Constants.ControlsRelatedConstants.standardForeColorName);
// Color.Teal as the backColor.
Color backColor = Color.FromName(Utilities.Constants.ControlsRelatedConstants.standardBackColorName);
// Fill the background.
e.Graphics.FillRectangle(new SolidBrush(backColor), 0, 0, width, height);
// Draw the line.
e.Graphics.DrawLine(new Pen(foreColor), 4, height/2, width - 4, height/2);
}
}
Затем добавить разделитель:
ToolStripSeparator toolStripSeparator = new ExtendedToolStripSeparator();
this.DropDownItems.Add(newGameToolStripMenuItem);
this.DropDownItems.Add(addPlayerToolStripMenuItem);
this.DropDownItems.Add(viewResultsToolStripMenuItem);
// Add the separator here.
this.DropDownItems.Add(toolStripSeparator);
this.DropDownItems.Add(exitToolStripMenuItem);
Результат:
Я просто указал событие Paint моих сепараторов для персонализированного прок:
private void mnuToolStripSeparator_Custom_Paint (Object sender, PaintEventArgs e)
{
ToolStripSeparator sep = (ToolStripSeparator)sender;
e.Graphics.FillRectangle(new SolidBrush(CUSTOM_COLOR_BACKGROUND), 0, 0, sep.Width, sep.Height);
e.Graphics.DrawLine(new Pen(CUSTOM_COLOR_FOREGROUND), 30, sep.Height/2, sep.Width - 4, sep.Height/2);
}
Если CUSTOM_COLOR_FOREGROUND является твердым/named Color, например Color.White.
- 1. Как изменить backcolor управления на фокусе
- 2. Как установить BackColor неактивного элемента управления
- 3. Как я могу программно найти Backcolor элемента управления DateTimePicker
- 4. Переключение управления backColor fast
- 5. проблема с ToolStripSeparator
- 6. Невозможно изменить BackColor ListView
- 7. Как изменить BackColor Tab?
- 8. Изменить панель инструментов backcolor
- 9. Как я могу предотвратить изменение свойства BackColor элемента управления?
- 10. Изменить свойства backcolor/forecolor для управления элементами из значения Integer?
- 11. Изменить фон управления с другого элемента управления
- 12. Как изменить имя элемента управления?
- 13. Изменить значение сегментированного элемента управления?
- 14. Изменить цвет пользовательского элемента управления
- 15. Изменить цвет элемента управления навигатора
- 16. Изменить цвет элемента управления SysLink
- 17. Невозможно изменить BackColor массива PictureBox
- 18. изменить цвет backcolor в datagridview
- 19. DataGridView CellMouseMove Row BACKCOLOR изменить
- 20. Как изменить BackColor кнопки внутри UserControl с другого UserControl?
- 21. Update BackColor управления в Desing времени
- 22. Как установить backcolor элемента управления на желаемый элемент управления в C#?
- 23. Панель BackColor устанавливает цвет ее элементов управления
- 24. Невозможно изменить BackColor User Control на события Mouse_Enter и Mouse_Leave
- 25. Backcolor of the BORDER панели Windows Forms
- 26. CallByName, set BackColor
- 27. Проверка наличия у дочернего элемента его BackColor, установленного пользователем
- 28. Как изменить размер элемента управления jQuery DatePicker
- 29. Как изменить свойство элемента управления из flowlayoutpanel?
- 30. Как изменить общедоступные свойства пользовательского элемента управления?
Я видел эту статью, но я ищу другое решение, я не думаю, что это лучшее решение. – Siwar
Я также исследовал его, но не нашел другой предполагаемой альтернативы, это была лучшая альтернатива практике. – Freelancer
Я помещаю этот код в Menu.designer.cs this.fileToolStripMenuItem.BackColor = System.Drawing.SystemColors.ButtonFace; но он не работает – Siwar