2011-11-10 51 views
0

我有一個VS解決方案,其中有幾個項目。例如,其中一個標題爲'Management',另一個標題爲'Runtime'以窗體形式爲不同的場景使用相同的表單

如果我將Management設置爲默認項目並運行它,則會打開一個名爲Scout的應用程序。如果我將Runtime設置爲默認項目並運行它,則打開一個名爲PM的應用程序。 需要使用登錄表單,我的要求是,必須爲兩個項目使用相同的登錄表單,並且我必須在名爲Data的新項目下創建登錄表單,其中可供其他項目(運行時和管理)

我的疑問是,在運行程序時,我需要找出哪個項目作爲默認運行,然後使用一些動態更新的控件加載登錄窗體(例如,如果首次執行Runtime proj,登錄表單應該有一個標籤「Welcome to Runtime」),如果Management proj首先被執行,登錄表單應該有一個標籤「Welcome to Management」

我該如何做到這一點?

回答

2

我認爲重新使用Form是可能的。 首先,創建你的登錄表單。 (也許你應該在DLL創建它,以重複使用在不同的項目。)

public partial class LoginForm : Form 
{ 
    //This constructor should only be called by the Designer. 
    public LoginForm() 
    { 
     InitializeComponent(); 
    } 

    public LoginForm(string title) : this() 
    { 
     TitleLabel.Text = title; 
    } 
    public Tuple<string, string> Login() 
    { 
     if (this.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      return new Tuple<string, string>(Username.Text, Password.Text); 
     } 
     else 
     { 
      return default(Tuple<string, string>); 
     } 
    } 

    private void OKButton_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = System.Windows.Forms.DialogResult.OK; 
    } 

    private void CancelButton_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = System.Windows.Forms.DialogResult.Cancel; 
    } 
} 

然後在不同情況下使用它:

var details = new LoginForm("Title here").Login(); 
if (details.Item1 == "username" && details.Item2 == "Password") 
{ 
    //logged in. 
} 
+0

+1作爲的問題,他應該創建一個新的項目(簡稱爲「數據」)將包含這種形式。然後RunTime和Management項目都可以顯示錶單並設置標籤/標題。 –

+0

@Shyc如何找出正在運行的項目以顯示相應的登錄表單? –

+0

@HarishKumar你不應該嘗試檢測登錄表單中運行的項目。只需在構造函數調用中將所需的信息作爲參數傳遞即可。 – FelisCatus

相關問題