我有一个框架,它有4个文本框和一个链接(更改no文本框)。当用户点击链接时,我隐藏了第4个文本框。但是发生的事情是在隐藏第4个文本框之后,它的空间仍然是空白的。我不想把它的空间留空。该空间应该消失,框架应该调整大小。有什么方法可以实现这个目标吗?当用户再次点击链接时(更改no文本框我再次显示第4个文本框。
代码:
m_ComputerNameText1 = new wxTextCtrl(m_panel, wxID_ANY, "computerName", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText2 = new wxTextCtrl(m_panel, wxID_ANY, "computerName1", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText3 = new wxTextCtrl(m_panel, wxID_ANY, "computerName3", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_ComputerNameText4 = new wxTextCtrl(m_panel, wxID_ANY, "computerName4", wxDefaultPosition, wxSize(250, wxDefaultSize.GetHeight()));
m_hyperLinkOption = new wxHyperlinkCtrl(m_panel, wxID_ANY, "Change no of textboxes", wxT(""), wxDefaultPosition, wxSize(135, wxDefaultSize.GetHeight()));
m_userPassSizer->Add(m_ComputerNameText1, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText2, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText3, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_ComputerNameText4, 0, wxALIGN_LEFT | wxALL, 0);
m_userPassSizer->Add(m_hyperLinkOption , 0, wxALIGN_LEFT | wxALL, 0);
单击超链接时执行以下函数。
void OnAuthCodeOptionLinkClicked(wxHyperlinkEvent& event)
{
if (!m_hyperlinkOptionSelected)
{
m_hyperlinkOptionSelected= true;
m_ComputerNameText4->Hide();
m_hyperLinkOption->SetLabel("Go back");
}
else
{
m_hyperlinkOptionSelected= false;
m_ComputerNameText4->Show();
m_hyperLinkOption->SetLabel("change no of textboxes");
}
}
通过这种方式,我必须隐藏并显示第4个文本框。隐藏一些空白后仍然存在。我怎样才能获得那个空格并在第4个文本框的位置取链接?
答案 0 :(得分:0)
每当我需要动态更新控件的大小时,我总是会调用Layout()
和Refresh()
。
您可以在此处找到有关布局的更多信息: http://docs.wxwidgets.org/3.1/classwx_window.html#a1b143c3e72bd0af533b76db4830a6113 以及一般有关窗口大小的一些好信息: http://docs.wxwidgets.org/3.1/overview_windowsizing.html
调用布局假定您构建和管理文本框等的类是wxWindow派生控件本身(如面板,框架等)。如果没有,就像您在视图模型上进行更改一样,您需要在拥有窗口上调用Layout和Refresh:
void UpdateView()
{
view->Layout();
view->Refresh();
}
您可能需要使用尺寸大小的窗户,最小尺寸的窗户等,以获得您想要的确切行为。