gtk一个小部件的多个样式

时间:2011-06-21 15:49:45

标签: coding-style gtk gtk#

我试图创建两种不同的按钮:带背景的按钮和没有背景的按钮。 不幸的是,我无法弄清楚我如何设置一些按钮来使用第一个样式和一些按钮来使用第二个样式。 这是一个代码示例(虽然我怀疑它会有所帮助) 有没有办法更改.cs文件中的按钮样式,或任何解决方法?

//init hyperlink


    Button hyperlink = new Button();

    Label hyperlink_label = new Label();

    hyperlink_label.Text = hyperlink_text;

    hyperlink_label.ModifyFg(StateType.Normal, new Gdk.Color(0,0,0));

    hyperlink_label.ModifyFg(StateType.Prelight, new Gdk.Color(255,255,255));

    hyperlink_label.ModifyFg(StateType.Selected, new Gdk.Color(255,255,255));

    Pango.FontDescription hyperlinkFontDesc = new Pango.FontDescription();

    hyperlinkFontDesc.Family = "Adobe Garamond Pro";

    hyperlinkFontDesc.AbsoluteSize = hyperlink_fontSize * Pango.Scale.PangoScale;

    hyperlink_label.ModifyFont(hyperlinkFontDesc);

    hyperlink.Add(hyperlink_label);

    mainWindowFixed.Put(hyperlink, hyperlink_pos[0], hyperlink_pos[1]);





    //init startbutton

    Button startButton = new Button();

    Label startLabel = new Label();

    startLabel.Text = startButton_text;

    startButton.Settings.ThemeName = "Ludwig_AutoUpdater";

    startLabel.ModifyFg(StateType.Normal, new Gdk.Color(255,255,255));

    startLabel.ModifyFg(StateType.Prelight, new Gdk.Color(255,255,255));

    startLabel.ModifyFg(StateType.Selected, new Gdk.Color(255,255,255));

    Pango.FontDescription startLabelFontDesc = new Pango.FontDescription();

    startLabelFontDesc.Family = "Klavika bd";

    startLabelFontDesc.AbsoluteSize = startButton_fontSize * Pango.Scale.PangoScale;

    startButton.Add(startLabel);

    startButton.Child.ModifyFont(startLabelFontDesc);

    startButton.SetSizeRequest(startButton_size[0], startButton_size[1]);

    mainWindowFixed.Put(startButton, startButton_pos[0],startButton_pos[1]);

1 个答案:

答案 0 :(得分:1)

不要改变Gtk.Button的风格。创建从Gtk.Button派生的自定义窗口小部件并更改该窗口小部件的样式。例如:

 public class BGButton : Gtk.Button {}

 public class NoBGButton : Gtk.Button {}

现在改变了BGButton和NoBGButton的风格。 然后,如果您想要使用背景的按钮BGButton,请使用NoBGButton