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::OnRenderMenuItemBackground' : matches base ref class method 'System::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::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::FillRectangle(System::Brush ,System::RectangleF)' : cannot convert parameter 2 from 'System::Rectangle ' to 'System::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::Rectangle ^' to 'System::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