我有以下用于关闭面板的功能:
def close_active_panel
if (@active_panel and @active_panel.class <= Wx::Window)
@sizer.detach(@active_panel)
@sizer.remove(0) # 0 is index of first and only item, the active panel
@active_panel.destroy_children
@active_panel.destroy
end
end
这大部分时间都有效,但偶尔(我似乎无法找到发生这种情况的模式),它会引发以下异常:
ArgumentError
Wrong arguments for overloaded method 'wxSizer.Detach'. Possible C/C++ prototypes are: bool wxSizer.Detach(wxWindow *window) bool wxSizer.Detach(wxSizer *sizer) bool wxSizer.Detach(size_t index)
这种情况似乎很奇怪,因为它甚至应该使用detach方法的唯一方法是active_panel是否继承自Wx :: Window类。
我在这里缺少某种继承技巧吗?我已经尝试输出活动面板及其父级的类,以确保它确实继承自Wx :: Window,并且问题仍然存在。任何帮助将不胜感激。