C# 使用MDILayout的Windows窗体排序

C# 使用MDILayout的Windows窗体排序,c#,winforms,mdi,C#,Winforms,Mdi,我在使用C#和Windows MDI表单应用程序时遇到了一个非常特殊的问题。我想向用户显示两个(或更多)图像,“左”和“右”图像。图像的名称对用户隐藏,然后用户选择他们喜欢的图像(这是涉及医学图像质量的研究的一部分,因此用户必须对图像名称中可能显示的相关捕获参数视而不见)。将向用户显示“图像0”和“图像1”(等)等替代名称,而不是显示实际名称 每当我使用标准的mdiloayout.TileVertical或TileHorizontal时,图像都以相反的顺序加载。例如,如果我有图像0和图像1,则会

我在使用C#和Windows MDI表单应用程序时遇到了一个非常特殊的问题。我想向用户显示两个(或更多)图像,“左”和“右”图像。图像的名称对用户隐藏,然后用户选择他们喜欢的图像(这是涉及医学图像质量的研究的一部分,因此用户必须对图像名称中可能显示的相关捕获参数视而不见)。将向用户显示“图像0”和“图像1”(等)等替代名称,而不是显示实际名称

每当我使用标准的
mdiloayout.TileVertical
TileHorizontal
时,图像都以相反的顺序加载。例如,如果我有图像0和图像1,则会显示它们

图像1图像0

三张或三张以上的图片可能是这样的

2110

3.2

10

等等。问题是,我的用户被这种从右到左的顺序弄糊涂了,如果我有另一个对话框询问他们哪幅图像更好(或对显示的图像进行评级),他们总是混淆屏幕上图像的顺序和对话框中图像的顺序。也就是说,如果我只是在分级对话框中对图像0 1 2 3等进行排序,它们会假定在MDI父窗口中显示的图像3是图像0,图像2是图像1等--它们从左到右读取,并且图像从右到左显示。如果我在“分级”对话框中对选项卡进行重新排序以反映屏幕上的顺序,这只会进一步混淆它们(“为什么图像3在图像2之前?”),结果会以错误的顺序出现,并且通常无法使用

那么,如何使用
C#
中的
mdiloayout
强制对显示的窗口进行排序呢?我必须手动完成吗,或者是否有一些开关可以发送给布局管理器


谢谢

为什么要使用MDI接口?当然,带有TableLayoutPanel或类似布局的单个窗口更合适。您希望使用MDI布局的唯一原因是允许用户移动窗口,根据您对问题的描述,这是不可取的?

您是否可以(在显示图像之前)通过以下方式避免此问题:

  • 将图像引用放入结构(数组或类似结构)中

  • 使用递归函数构建一个逆序结构(或对原始结构重新排序)

  • 使用新的颠倒顺序结构像以前一样构建子窗口


  • 它会再增加一层,但如果没有人很快找到反向布局顺序开关,则可能会解决您的问题。

    我强烈建议遵循Groky的建议,并为此使用单一表单界面,而不是MDI

    如果必须使用MDI,则需要知道MDI布局方法使用MDI表单的Z顺序来确定表单的最终位置。例如,如果图像2位于图像1后面,则图像1将位于左侧,图像2将位于右侧。导致这种情况发生的最合理的方法是加载映像2的表单,然后加载映像1的表单,然后进行MDI布局。您还可以使用
    ActivateMdiChild
    方法按特定顺序放置表单(激活一个表单会将其他表单放在后面)


    它很复杂而且容易出错,我强烈建议在一个表单上使用两个窗格的界面,但这会起作用。

    谢谢Owen和Groky,但是单表单界面不会起作用。首先,我已经有了MDI格式的显示代码,因此重写需要对代码进行非常非常大的重写。不久前,我花了大约三周的时间来编写应用程序的基础知识;这些不是我在这里展示的JPG,这些是DCM图像,每一个都是30 mb,有各种各样的支持工具,我在医学成像之外没有见过

    第二,一些放射学家不喜欢分割筛查进行图像比较,而另一些放射学家则需要这样做。因此,为了适应这两种用户,我设置了平铺,但是用户可以最大化图像,然后在它们之间切换。因此,MDI是针对不同口味的正确方法;一个带有一组非常复杂的选项卡控件的单一界面与一个已经存在且(大部分)正在工作的系统相比,听起来就像是一场噩梦


    但是,因为我控制了图像的显示方式,所以我可以强制进行z排序,然后这应该会起作用,对吗?这就是弗雷德和欧文答案的基础,如果我正确阅读的话。用户进入“评估模式”,然后程序加载图像并显示,只有用户输入评估后,图像才会关闭。考虑到这个限制,我可能可以强制执行特定的z顺序(可能通过从长度到0而不是从0到长度循环)。

    另一个想法是将实际的评级机制放在每个子窗口的底部。所以答案实际上是附在他们孩子的窗口上的图片上,而不是在他们自己的区域中。

    是的!为什么我要记住我喜欢哪一个--只要给我一个按钮,让我点击它。