![](/img/trans.png)
[英]Can't run a windows form app on other PC, can't find a dll from a project of the same solution
[英]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.