[英]Windows form opening other forms
我想要的是
我正在創建一個具有兩個功能的應用程序。 這兩種功能都有自己的形式(稱為FactuurForm和VerhuurForm)。 我有另一個名為Home的表單,其中包含兩個按鈕。 根據單擊的按鈕,我希望打開兩個表單中的一個,然后關閉主頁表單。
是)我有的
目前,我有以下代碼:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Home home = new Home();
home.ShowDialog();
if (home.kiesFactuur)
{
FactuurForm factuur = new FactuurForm();
home.Close();
factuur.ShowDialog();
}
else if (home.kiesVerhuur)
{
VerhuurForm verhuur = new VerhuurForm();
home.Close();
verhuur.ShowDialog();
}
}
}
kiesFactuur和kiesVerhuur是我的Home類中的布爾值,初始化為false。 一旦我點擊按鈕,相應的布爾值將翻轉為true,觸發if語句以關閉home-form並打開新表單。
我的問題
盡管我當前的代碼工作,但對於這樣一個簡單的功能來說似乎有點多了。 我覺得我不需要布爾,這一切都變得容易了。 那么有更簡單/更好的方法嗎?
我還考慮過創建多個Main函數。 單擊按鈕將激活相應的新Main函數並終止當前Main。 這是否可能,如果是這樣,這是一個很好的解決方案嗎?
我並不完全理解完全關閉主頁的必要性。 我只為每個按鈕放置2個事件處理程序,並在它們上面調用以下代碼。 關閉子窗體時,第一個窗體將被隱藏和關閉。
private void ShowSubDialog(Form form)
{
this.Hide(); //makes your main form invisible before showing the subform
form.ShowDialog();
}
private void button1_Click(object sender, EventArgs e)
{
ShowSubDialog(new FactuurForm());
Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
ShowSubDialog(new VerhuurForm());
Dispose();
}
private void Factuur_Click(object sender, EventArgs e) {
LoadForm(new FactuurForm());
}
private void Verhuur_Click(object sender, EventArgs e) {
LoadForm(new VerhuurForm());
}
private void LoadForm(Form f) {
this.Hide();
f.ShowDialog();
this.Show();
}
將其添加到您的Home表單中,從Main中刪除home.ShowDialog()之后的所有內容,並使Facturr_Click和Verhurr_Click處理各自按鈕的單擊事件。 這將允許Home自動隱藏/顯示。
您應該像這樣替換您的代碼:
if (home.kiesFactuur)
{
FactuurForm factuur = new FactuurForm();
factuur.Show();
this.Hide();
}
else if (home.kiesVerhuur)
{
VerhuurForm verhuur = new VerhuurForm();
verhuur .Show();
this.Hide();
}
在VerhuurForm
和FactuurForm
您可以像這樣關閉事件:
public VerhuurForm()
{
InitializeComponent();
this.FormClosed += new FormClosedEventHandler(VerhuurForm_FormClosed);
}
void FormClosedEventHandler(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
如果您關閉表單,請確保您的應用程序已關閉,因為Home
仍處於活動狀態但已隱藏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.