2011-05-27 87 views
1

我已經創建了一個CustomControl來顯示信息的標籤和可被最小化/帶箭頭按鈕恢復:達網絡對接控制

enter image description here

應當停靠到一個形式的頂部。

然後以相同的形式,通常我有所有的正常對照中央面板,在這裏它是showm黃色只是爲了突出它。

enter image description here

最後,我有包含所有形式上可用的命令/按鈕的底部面板。這是停靠在底部。

的問題是,我不知道如何設置中央面板設置爲自動消耗完可用的空間時,我崩潰的頂部面板。也就是說,沒有「中心」對接風格。

如果我停靠中間面板的頂部,然後當我崩潰頂一個,我得到:

enter image description here

如果我錨中間面板的所有邊緣,我得到:

enter image description here

如果我停靠中間面板填充區域,則無論其他面板是否存在,它都會填充表格的所有客戶區域。

是的我可以在頂部控件中創建一個事件來通知誰對尺寸更改感興趣,但..這是一個醜陋的解決方案,因爲它不是自動的:在每種形式中,我都必須傾聽事件並調整其大小中間面板相應。

有一種優雅的解決這個問題?

回答

2

你想後DockStyle.Fill但是如果中間控制會「背後」的頂部和底部停靠控件,然後您需要重新排序控件。 Internall WinForms按照它們添加到父項的順序處理項目。在VisualStudio的設計師,你是停靠到填充中間面板上單擊鼠標右鍵,選擇「置於頂層」或「移動到備份」。我忘了它是哪一個,但其中一個應該解決你的問題。

+0

這是做的伎倆。我正在使用send-to-back,取而代之的是相反的:帶來前端!非常直觀,但它的工作原理。 – vulkanino 2011-05-27 13:02:33

2

設置DockStyle到填寫

enter image description here

其他兩個後添加這種控制。爲了確保談到另外兩個,CTRL-X,然後CTRL-V回。

+0

底部contorl將佔據總的空間我覺得OP提到這並未不工作:「如果我停靠中間面板填充區域,則無論其他面板是否存在,它都會填充表格的所有客戶區域。」 -OP – 2011-05-27 12:57:10

+0

>如果我停靠中間面板填充區域,則無論其他面板是否存在,它都會填充表格的所有客戶區域。 – vulkanino 2011-05-27 12:58:46

+0

@Drackir Ok編輯 – hawbsl 2011-05-27 12:59:22

1

使用分割容器將解決這個問題。 拖動面板並使面板停靠屬性頂部(它有你的擴展器/摺疊按鈕)。 現在拖動拆分容器並將oreination更改爲horizo​​ntal.and將dockstyle更改爲填充。

現在在SplitContainer的頂部面板拖動烏爾定製控制和添加回合表單控件到底部分配器面板。 當你要躲則躲烏爾自定義控件寫在按鈕點擊下面的邏輯頂部面板

private void btnExpandCollapseOptions_Click(object sender, EventArgs e) 
    { 
     if (splMainContainer.Panel1Collapsed) 
     { 
      splMainContainer.Panel1Collapsed = false; 
      btnExpandCollapseOptions.Image = ImageResource.collapseMinus; 
//changing image to collapse/expand from imageresource.resx file 
     } 
     else 
     { 
      splMainContainer.Panel1Collapsed = true; 
      btnExpandCollapseOptions.Image = ImageResource.ExpandPuls; 
     } 

    } 

上時自定義控件崩潰

+0

分體面板正是你想要用於這種情況。它允許您使用碼頭填充或任何其他填充樣式。 – 2012-08-01 14:51:09