Пользовательский рендер ToolStrip
я хочу сделать красивый рендер для ToolStrip, но все руководства и гайды написаны на С#.
Вот пример https://www.codeproject.com/Articles/29497/Custom-Rendering-for-the-ToolStrip-MenuStrip-and-S
Я попробовал портировать этот код, но у меня не особо получилось, так как я не очень разбираюсь в C#.
Как сделать также только на C++/CLI?
Ответы (1 шт):
Автор решения: MyDoomH
→ Ссылка
Вот кому нужно...
CustomColorTable.h
namespace YourNamespace
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class CustomColorTable : public System::Windows::Forms::ProfessionalColorTable {
public:
Color _color = Color::DeepPink;
public:
property Color MenuBorder
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemBorder
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemPressedGradientBegin
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemPressedGradientEnd
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemPressedGradientMiddle
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemSelected
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemSelectedGradientBegin
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuItemSelectedGradientEnd
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuStripGradientBegin
{
public: virtual Color get() override
{
return _color;
};
};
public:
property Color MenuStripGradientEnd
{
public: virtual Color get() override
{
return _color;
};
};
};
}
В вашей форме с MenuStrip
#include "CustomColorTable.h"
namespace YourNamespace
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Resources;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
this->MenuStrip1->RenderMode = System::Windows::Forms::ToolStripRenderMode::System;
this->MenuStrip1->Renderer = (gcnew System::Windows::Forms::ToolStripProfessionalRenderer(gcnew CustomColorTable()));
...
Также можно сделать и для ToolStrip только нужно поменять названия свойств в CustomColorTable.h
Названия можно взять тут