EventBox和Notebook中的派生类之间的行为不同

时间:2018-02-09 15:19:18

标签: c# inheritance gtk gtk# gtk2

我以前认为直接从另一个派生的类,没有任何修改,将表现出与基础相同的行为。 GTK#事件框似乎不是这种情况。当封装在Notebook中时,带有StateType.Normal的EventBox的背景与从EventBox派生的自定义小部件的背景不同。这是VisibleWindow on。

问题已在编译下方的代码片段中重现,以将输出作为图像附加。编辑:修复窗口初始化。

class TestBox : EventBox {
}

class MainClass {
    public static void Main (string[] args) {
        Application.Init();

        Window win = new Window(WindowType.Toplevel);
        Table table = new Table(2, 2, true);

        Notebook notebook1 = new Notebook();
        notebook1.ModifyBg(StateType.Normal, new Gdk.Color(255, 0, 0));
        notebook1.AppendPage(GetTestPair(), new Label("Test"));
        table.Attach(notebook1, 0, 1, 0, 1);

        Notebook notebook2 = new Notebook();
        notebook2.AppendPage(GetTestPair(), new Label("Test"));
        table.Attach(notebook2, 1, 2, 0, 1);

        EventBox eventbox = new EventBox();
        eventbox.ModifyBg(StateType.Normal, new Gdk.Color(255, 0, 0));
        eventbox.Add(GetTestPair());
        table.Attach(eventbox, 0, 1, 1, 2);

        table.Attach(GetTestPair(), 1, 2, 1, 2);

        win.Add(table);
        win.ShowAll();
        Application.Run();
    }

    public static Widget GetTestPair () {
        HBox boxes = new HBox { BorderWidth = 5 };
        EventBox box1 = new EventBox() { Child = new Frame("EventBox") };
        TestBox box2 = new TestBox() { Child = new Frame("TestBox") };
        boxes.PackStart(box1);
        boxes.PackStart(box2);
        return boxes;
    }
}

我Macbook Air上的输出如下。窗口的每个四分之一都包含一个EventBox / TestBox并排用于比较。第一行显示它们直接附加到表(与预期相同的行为);第二行在笔记本中显示它们然后附加到表格(显示不同的背景)。为了清晰度和对比度,第一列被赋予了红色背景。

Output of the example code showing the issue.

有谁知道为什么会发生这种情况,或者是否有任何解决方法来标准化背景颜色?感谢。

0 个答案:

没有答案