我創建了一堆表單,並且我想在應用程序關閉/啓動時保存並恢復其位置。Form.visible必須爲true才能讀取.left和.top?
但是,如果窗體不可見,那麼.top
和.left
都是0.只有當它們可見時,纔會使用它們的「真實」值填充這些屬性。
現在我的雜牌是顯示每個窗體,保存信息,然後將其返回到之前的可見狀態:
int i;
bool formVisible;
// Show all current forms and form positions in array frmTestPanels
i = 0;
while (frmTestPanels[i] != null)
{
formVisible = frmTestPanels[i].Visible;
frmTestPanels[i].Visible = true;
note(frmTestPanels[i].Text + "(" + frmTestPanels[i].Left.ToString() + ", " + frmTestPanels[i].Top.ToString() + ") visible: " + formVisible.ToString());
frmTestPanels[i].Visible = formVisible;
i++;
}
note(i.ToString() + " forms present");
note()
是一個簡單的函數,只是顯示的信息。
這當然會導致關閉時閃爍所有不可見的窗體(可能在啓動時也是如此?還沒有到那麼遠......),這是不可取的。
- 是否有另一種方式來獲取窗體的頂部和左側,當它不可見?
- 或者,有沒有更好的方式來保存和恢復表單狀態?
表單永遠不會被用戶關閉 - 這些表單會在應用程序的生命週期中創建並持續存在。當用戶「關閉」表單時,它僅僅將可見屬性設置爲false。在某些情況下,表單從不顯示 - 只有當用戶請求時才顯示。 – 2009-07-07 19:46:42
即使不是關閉它的用戶,您仍然可以在FormClosing事件中保存位置... – 2009-07-07 19:48:40
因此,如果form.visible = false,當窗體關閉時,我可以讀取.top和.left?即使是這種情況,我也會希望在不關閉表單的情況下保存表單狀態。 – 2009-07-07 19:50:09