2011-11-10 11 views
0

複数のプロジェクトがある場合はVSソリューションがあります。たとえば、「Management」というタイトルのものと「Runtime」というタイトルのものWindowsで異なるシナリオで同じフォームを使用する

Managementをデフォルトプロジェクトとして設定して実行すると、Scoutというアプリケーションが開きます。ランタイムをデフォルトプロジェクトに設定して実行すると、PMというアプリケーションが開きます。 ログインフォームを使用する必要があります。私の要件は、両方のプロジェクトで同じログインフォームを使用する必要があります。他のプロジェクト(ランタイムと(例えば、Runtime projが最初に実行された場合、ログインが最初に実行された場合、ログインが実行された場合、ログインプロンプトが表示されます)フォームには「Welcome to Runtime」というラベルが付いている必要があります)、管理プロジエクトが最初に実行される場合、ログインフォームには「管理へようこそ」というラベルが付いていなければなりません。

どうすればいいですか?

答えて

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を、彼が作成する必要がありますこのフォームを含む新しいプロジェクト( 'Data''と呼ばれる)を作成します。ランタイムプロジェクトと管理プロジェクトの両方でフォームを表示し、ラベル/タイトルを設定できます。 –

+0

@Shyc対応するログインフォームを表示するためにどのプロジェクトが実行されているかを知るにはどうすればよいですか? –

+0

@HarishKumarログインフォームで実行中のプロジェクトを検出しないでください。必要な情報をコンストラクタ呼び出しの引数として渡すだけです。 – FelisCatus

関連する問題