簡體   English   中英

c#從同一解決方案中的其他項目運行表格

[英]c# run form from other project in same solution

我在Visual Studio 2015中擁有帶有Windows窗體的C#解決方案。在解決方案中,有兩個項目:項目A,項目B。

如果我運行項目B,將顯示登錄對話框。 如果登錄通過,則打開主窗體。

如果我在項目A中單擊按鈕,我希望得到相同的行為。但是它僅顯示對話框,但是單擊登錄后,主窗體不會打開

這是項目B的原始工作代碼:

 static void Main() {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);

     LoginForm pf;
     Application.Run(pf = new LoginForm ());

     if (pf.Zakaznik != null)
         Application.Run(new MainForm(pf.Zakaznik));
 }

這是來自項目A的代碼:

private void button1_Click(object sender, EventArgs e) {
    UC001.View.LoginForm pf = new UC001.View.LoginForm ();
    pf.Show();
    if (pf.Zakaznik != null) {
        UC001.MainForm a = new UC001.MainForm(pf.Zakaznik);
        a.Show();
    }
}

您必須通過使用引用來實例化表單

var f = new ProjectB.Form1.cs(); 
f.Show();

您的其他表單未顯示(您的主要表單),因為它已經打開。 一旦打開一個新的,就需要這樣做this.Close(); 當您顯示另一種形式時,它實際上僅隱藏另一種形式(或不理會它)。

而不是調用Show() ,應該調用ShowDialog() 后一種方法將阻塞您的代碼,直到用戶關閉窗口。 通過調用第一個方法,您的代碼將立即繼續運行,而無需等待用戶關閉對話框,從而導致pf.Zakaznik始終為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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