C++ 将对话框控件移动到选项卡中?

C++ 将对话框控件移动到选项卡中?,c++,windows,visual-studio-2010,user-interface,mfc,C++,Windows,Visual Studio 2010,User Interface,Mfc,我有一个带有几个控件的对话框。接下来,我添加了一个非常庞大的第三方网格控件。看起来不错,但屏幕空间不够。一个理想的选择是有两个选项卡,一个带有现有控件,另一个用于保存网格 看起来,这种“tab”方法需要完全重写代码。有没有更好的办法?当您想将GUI控件移动到您知道的选项卡中时,是否有任何特定的问题?这不可能这么简单,但是如果您使用的是winforms designer,为什么不能剪切控件,插入选项卡控件,然后粘贴控件呢?如果您在代码丢失到处理程序时遇到问题,您总是可以先将部分源代码复制到记事本中

我有一个带有几个控件的对话框。接下来,我添加了一个非常庞大的第三方网格控件。看起来不错,但屏幕空间不够。一个理想的选择是有两个选项卡,一个带有现有控件,另一个用于保存网格


看起来,这种“tab”方法需要完全重写代码。有没有更好的办法?当您想将GUI控件移动到您知道的选项卡中时,是否有任何特定的问题?

这不可能这么简单,但是如果您使用的是winforms designer,为什么不能剪切控件,插入选项卡控件,然后粘贴控件呢?如果您在代码丢失到处理程序时遇到问题,您总是可以先将部分源代码复制到记事本中,然后在屏幕上移动控件后将其粘贴回去

也可以尝试拖放到选项卡控件。只需在屏幕的一角用两个标签将其缩小即可。当你拖动时,它会在你下降时保持位置。如果所有控件都在其中,请展开它


像这样的东西可以与winforms+c一起使用。。。我不知道你在用什么屏幕设计编辑器或Gui技术。我甚至不确定站台。显然,如果不是windows,那么我就太离谱了

如果使用选项卡式对话框,请选中此项以避免出现最琐碎的gotca:

  • 应避免将对话框控件(如“确定”和“取消”)按钮放在选项卡上,因为它们适用于整个对话框,而不是选定的选项卡

  • 在对话框中使用选项卡被认为是个坏主意,因为用户在单击“确定”时无法看到所有输入。例如,用户在tab1上更改了一些内容,单击tab2并单击OK-现在用户感觉她没有更改任何内容(在tab2上),但按OK仍然应用他的更改。当然,有时选项卡是不可避免的,但是如果您可以避免在模式对话框中使用它们,请避免。一个糟糕的例子是,所有搜索参数都在多个视觉上不相关的选项卡上输入

  • 选项卡隐喻用于多个文档,而不是多个输入

我不想在这里用标签。您可以使对话框变大,网格变小,可以使用布局让用户使整个对话框变大,并从网格中看到更多内容,还可以使用拆分器让用户自定义GUI

(我多次发现使用GUI设计器(如winforms designer)是一个坏主意。最初布局控件非常有帮助。但是从其他角度来看,这确实是一个障碍,例如隔离代码(并将其放到另一个选项卡上)简而言之,您将放弃OOP的所有灵活性和功能,转而采用一种更快的方式将小部件放到表单中

如果你在代码中有现有的表单,你可以用它创建一个类,再为网格创建另一个类。然后重构你的表单,创建一个tabsheet,在第一个选项卡上放置第一个类的实例,在第二个选项卡上放置网格的实例


一旦你能用OOP隐藏实际GUI框架的复杂性,从代码中编程GUI并不一定困难。如果你想看一个例子,请告诉我。)

你能发布屏幕截图吗?请添加指示平台(Linux、mac、iOs、win)和窗口技术(x-windows、wpf等)的标签很遗憾,我无法发布屏幕截图。我使用Visual Studio 2010.Thx作为警告。这里不会有这样的问题,第二个标签在网格中显示结果,没有输入。嗯,我只是猜测你的用例。如果网格仅输出,您可以考虑在单独的对话框中将其打开为“输出”。或者,如果它是一种搜索参数-搜索结果的东西,那么你可以考虑让面板显示可能隐藏的输入字段(并给网格提供更大的屏幕空间)。使用“显示/隐藏”按钮让用户再次打开“搜索详细信息”字段。您还可以使用渐进式公开限制可见的输入字段。