2013-12-14 3 views
3

임이 다른 버튼을 클릭 이벤트에서 호출GTK C# 위젯 색 변경은

button1.ModifyBase(Statetype.Normal,new Gdk.Color(1,1,1)); 

를 사용하여 GTK 번호의 버튼 위젯의 색상을 변경하려고 작동하지 않는,하지만 위젯의 색은 업데이트되지 않습니다

이것은 왜?

답변

2

'벗겨지기 쉬운'ModifyBase 대신 ModifyBG 메서드를 사용하면 동일한 매개 변수가 전달됩니다. 당신이 모노 GTK 번호에서 GTK2.x 다루고있는 그것은 '테마'와 모노에 올 때 양쪽에 문제의 톤이 있기 때문에

button1.ModifyBG(Statetype.Normal,new Gdk.Color(1,1,1)); 

은 BTW, 나는 색다른 말한다. GTK3에는 CSS 방식을 사용하는 구성 모델이 있지만 Mono 배포판은 GTK2에 고정되어 있습니다. 응용 프로그램을 GTK 방식으로 테마 화/색상 화하려는 경우 테마 GTK 2.x를 검색 할 수 있습니다. 참고 : MonoDevelop/XS를 사용하는 경우 응용 프로그램 테마가 변경 될 때 IDE 외부에서 일상적으로 테스트/실행해야합니다 (이는 OS-X에서 분명히 드러나며 몇 년 또는 몇 년 후에 다시 발생하는 문제 임).

백그라운드 색상으로 올바르게 '작동하지 않는'다른 위젯을 사용하는 경우 해당 위젯이 배경이있는 이벤트 위젯에 배치 할 수 있습니다. Mono 이메일 쓰레드 내에서 2007 년 이후로이 조건을 검색 할 수 있습니다.

+0

GTK 메인 윈도우에서 GTK 메인 윈도우에서 호출 될 때도 작동하지 않습니다. 메인 스레드의 버튼에 대해 위젯에서 여전히 작동하지 않습니다. – techno

+0

"메인 스레드에서 메인 윈도우의 경우 작업"? GTK + 메인 루프 스레드의 창 배경색을 설정할 수 있고, 위젯의 배경색을 해당 창의 부모 색으로 설정하지 않을 수 있습니까? –

+0

예. 코드를 Gtk.Application.Invoke()에 넣습니다. – techno