Kolor podświetlenia kontrolek

0

Napisałem program oraz zrobiłem do niego dość przyjazne kolorowe menu z możliwością zmiany skórki. Ale niestety te niebieskie podświetlenia w menuStrip czy dataGridView psują cały efekt. Szukałem jak to zmienić ale te rozwiązania nie dość, ze są podane tylko na c# to jeszcze są niezrozumiałe dla mnie. Podpowie ktoś coś jak to zrobić? Pisze w C++/CLI

0

Skoro nie rozumiesz dokumentacji i przykładowego kodu w C#, gdzie ten w C++/CLI będzie w 95% identyczny to czego oczekujesz od nas? Gotowego kodu?

0

Tak oczywiście, że gotowego kodu bo po co bym tu przychodził. O matko weź się zastanów 2 razy zanim zaczniesz kogoś obrażać. Jeżeli z czymś mam na prawdę poważny problem to dopiero pisze na forum nie zaprzątam głowy innych jakimiś pierdołami. Zanim napisze coś tutaj siedzę kilka godzin i szukam rozwiązania.
W samej dokumentacji nie mogę znaleźć nic ciekawego, a np kod podany tutaj http://www.daniweb.com/software-development/csharp/code/357047 nie dokończa wiem gdzie wstawić bo wygląda mi na to, że kod ten jest wykonywany raz przy starcie programu, a ja potrzebuje wykonać go w każdej chwili.

0

OnRenderMenuItemBackground jasno chyba mówi, że kod jest wykonywany za każdym razem, gdy trzeba będzie odrysować tło konkretnego menuitem. Jeżeli chcesz uzależnić ten kolor od jakiejś opcji, którą chcesz ustawić w runtime to przecież nic nie broni ci wstawić tam właściwości/pola jakiejś twojej klasy zamiast koloru na sztywno.

0

@Rev help...
Wiem, że ten kod

this->menuStrip1->Renderer = gcnew myRenderer();

musi być przy ustawieniach menuStrip ale za nic w świecie nie wiem gdzie umieścić klasę... Po raz pierwszy robię coś z klasą zagnieżdżona.

0

Bazuj człowieku na C#... ehhh

Kolejny dzień niepowodzeń oto mój kod. Proszę was powiedźcie co jest nie tak

public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            menuStrip1->Renderer = gcnew myRenderer();
            //
            //TODO: Add the constructor code here
            //
        }
//destruktor formularza
//...
private: System::Windows::Forms::MenuStrip^  menuStrip1;
//...
private: ref class myRenderer : ToolStripProfessionalRenderer 
             {
                protected: virtual void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs^ myMenu)
                {
                    if (!myMenu->Item->Selected)
                        base::OnRenderMenuItemBackground(myMenu);
                    else
                    {
                        Rectangle^ menuRectangle = gcnew Rectangle(Point::Empty, myMenu->Item->Size);
                        myMenu->Graphics->FillRectangle(Brushes::DarkGreen, menuRectangle);
                        myMenu->Graphics->DrawRectangle(Pens::Lime, 1, 0, menuRectangle->Width - 2, menuRectangle->Height - 1);
                    }
                }
             }

Błędy które dostaje:
//1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(154) : error C4485: 'Program::Form1::myRenderer::OnRenderMenuItemBackground' : matches base ref class method 'System::Windows::Forms::ToolStripProfessionalRenderer::OnRenderMenuItemBackground', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed
1> c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : see declaration of 'System::Windows::Forms::ToolStripProfessionalRenderer::OnRenderMenuItemBackground'
1> Specify 'override' (and 'virtual') to override the ref class virtual method
1> Specify 'new' (and 'virtual') to hide the ref class virtual method with a new virtual method
1> Position for 'new' and 'override' keywords is after method parameter list
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(168) : error C2059: syntax error : 'private'
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(179) : error C2062: type 'void' unexpected
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(180) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(79) : error C3861: 'InitializeComponent': identifier not found
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(157) : error C2653: 'base' : is not a class or namespace name
1>c:\users\jaro\documents\visual studio 2008\projects\program\Form1.h(162) : error C2664: 'void System::Drawing::Graphics::FillRectangle(System::Drawing::Brush ,System::Drawing::RectangleF)' : cannot convert parameter 2 from 'System::Drawing::Rectangle ' to 'System::Drawing::RectangleF'//

Może znajdzie się jakiś samarytanin i coś podpowie, bardzo proszę...

0

1> Specify 'override' (and 'virtual') to override the ref class virtual method
1> Specify 'new' (and 'virtual') to hide the ref class virtual method with a new virtual method
1> Position for 'new' and 'override' keywords is after method parameter list

brakuje override.

brakuje średnika po klasie myRenderer.

cannot convert parameter 2 from 'System::Drawing::Rectangle ^' to 'System::Drawing::RectangleF

czytasz w ogóle te komunikaty?

0

Nie wierze działa! Wielkie, wielkie, wielkie dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0