[英]Go back to Previous Form inside Panel (C#) winform
我有一個儀表板面板,我可以在其中發送和處理表格。 在側面的按鈕上,他們將表單發送到儀表板面板,在用戶完成工作之后,他們單擊另一個按鈕,將另一個表單發送到儀表板。 我如何使用“后退”按鈕返回上一個表格。 假設(員工詳細信息)按鈕將表格發送到儀表板面板,工作完成后,用戶單擊(所有員工) ,新表格進入面板。 現在的問題是我有一個“后退按鈕”,那么如何將以前的表單(在本例中為“ Employee Detail”)放入儀表板。
我嘗試過在主表單中使用靜態表單,但是以這種方式,我只能返回一個階段。 例如:(員工詳細信息)(所有員工)
但是如果一行中有多個表單怎么辦
(員工詳細信息表格)(所有員工的表格)(刪除員工的表格)(等等)
命名空間Agency.Forms {
public partial class MainMenuForm : Form
{
public static Form StaticForm;
private void UpdateDashBoardForm(Form myform) //use to get form and add to panel
{
if (myform == null)
{
return;
}
ClearDashBoard();
myform.TopLevel = false;
DashBaordPanel.Controls.Add(myform);
myform.Dock = DockStyle.Fill;
myform.Show();
}
private void ClearDashBoard()
{
foreach (Form item in DashBaordPanel.Controls)
{
if (!item.Equals(StaticForm))
{
item.Dispose();
}
else
{
item.Visible = false;
}
}
}
}
我希望后退按鈕可以獲取以前添加到儀表板的所有表單,例如表單應存儲在堆棧中,單擊后退按鈕應從堆棧中獲取最頂部的表單並從堆棧中彈出。
幫助:我需要2個功能1)將表單添加到靜態列表中。 void addForm(Form obj);
2)從列表中返回最近的Form並將其從列表中刪除Form getForm();
所以在這一點上,您StaticForm
該類提供下一個表單( myform
),然后顯示它並處理當前的類StaticForm
,對嗎?
您可以做的是將StaticForm添加到列表中,當您“建立”歷史記錄時,它會繼續添加列表。 然后,當您要使用“后退”按鈕時,您只需查找歷史記錄中的最后一個表格,然后回調該表格即可。
示例代碼:
List<Form> FormHistory = new List<Form>( );
public static Form StaticForm;
private void UpdateDashBoardForm(Form myform) //use to get form and add to panel
{
FormHistory.Add( StaticForm );
// Plus Your code.
}
private void GoBackToPreviousForm()
{
if( FormHistory.Count > 0 )
{
// Plus what ever you need to do to go to the next form.
FormHistory[ FormHistory.Count - 1 ].Show( );
FormHistory.RemoveAt( FormHistory.Count - 1 );
}
else
{
// You are at the first loaded form.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.