У меня тоже была эта проблема.Я использую Mono Gtk #.Оказывается, каждый раз, когда вы изменяете текст кнопки, он создает новый дочерний виджет Label для отображения текста.Вы должны менять цвет переднего плана для дочернего виджета при каждом изменении текста.
private void ChangeButtonTextAndColor (Button button, string text)
{
// Get forground color of the button widget to use for the label text color
var fore = button.Style.Foreground (StateType.Normal);
// Change the text - it will create a new label widget
// Note: Child will be NULL until some text is set
button.Label = text;
// Change the text color for the new label
// One color for all the different states
button.Child.ModifyFg (StateType.Insensitive, fore);
button.Child.ModifyFg (StateType.Active, fore);
button.Child.ModifyFg (StateType.Normal, fore);
button.Child.ModifyFg (StateType.Prelight, fore);
button.Child.ModifyFg (StateType.Selected, fore);
}