簡體   English   中英

Windows窗體打開其他窗體

[英]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();
        }

VerhuurFormFactuurForm您可以像這樣關閉事件:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM