我需要以“矩形”形式订购窗户。这意味着当我有六个窗口时,它以 2x3 矩形排列,当我有 5 个窗口时,它以 2x3 排列,但没有最后一个窗口,当我有 9 个窗口时,它以 3x3 排列。但是我在坐标方面遇到了一些麻烦 - 子窗口超出了 mdiparent 窗口的范围。(img)
我使用的算法与我在 java 上的 mdi 应用程序中使用的算法相同
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
try{
indfr.get(counter).setLocation(i*theDesktop.getWidth()/a,j*theDesktop.getHeight()/b);
indfr.get(counter).setSize(theDesktop.getWidth()/a,theDesktop.getHeight()/b);
counter++;
}catch (IndexOutOfBoundsException exc){ break;}
indfr - arralist of JInternalFrames
和_theDesktop - JDesktopPane
c#中的算法
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
try
{
list[counter].SetDesktopLocation(i*list[counter].MdiParent.Width/a, j*list[counter].MdiParent.Height/b);
list[counter].Size = new Size(list[counter].MdiParent.Width/a, list[counter].MdiParent.Height/b);
counter++;
}
catch (IndexOutOfRangeException)
{
break;
}
在哪里列出 -Form[] list = this.MdiChildern;
坐标有什么问题?(PS 这不是整个算法,但它是窗口排序的主循环)