2011-11-10 4 views
0

여러 프로젝트가있는 경우 VS 솔루션을 사용하고 있습니다. 예를 들어, 그 중 하나는 '관리', 다른 하나는 '런타임'입니다.Windows에서 다른 시나리오에 대해 동일한 양식 사용

관리를 기본 프로젝트로 설정하고 실행하면 스카우트라는 응용 프로그램이 열립니다. 런타임을 기본 프로젝트로 설정하고 실행하면 PM이라는 응용 프로그램이 열립니다. 로그인 양식을 사용해야한다는 요구 사항이 있습니다. 동일한 로그인 양식을 두 프로젝트에 모두 사용해야하며, 다른 프로젝트 (런타임 및 런타임)에서 사용할 수있는 데이터라는 새 프로젝트에서 로그인 양식을 만들어야합니다. 관리)

내가 의심 스럽지만 프로그램을 실행하는 동안 어떤 프로젝트가 기본값으로 실행 중인지 확인한 다음 일부 동적으로 업데이트 된 컨트롤을 사용하여 로그인 양식을로드해야합니다 (예 : 런타임 프로젝트가 먼저 실행되면 로그인 양식에는 "Welcome to Runtime"이라는 레이블이 있어야합니다.) 그리고 관리 proj가 먼저 실행되면 로그인 양식에 "Welcome to Management"레이블이 있어야합니다.

어떻게해야합니까?

답변

2

재사용은 Form라고 생각합니다. 먼저 로그인 양식을 만드십시오. 다음

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; 
    } 
} 

을 (. 어쩌면 당신은 다른 프로젝트에서 재사용하기 위해 DLL에를 만들어야합니다) 다른 시나리오에서 사용 : 질문과 마찬가지로

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

일, 그는 만들어야합니다 이 양식을 포함 할 새로운 프로젝트 ('Data'라고도 함). 그런 다음 런타임 및 관리 프로젝트 모두 양식을 표시하고 레이블/제목을 설정할 수 있습니다. –

+0

@Shyc 해당 로그인 폼을 표시하기 위해 어떤 프로젝트가 실행되고 있는지 어떻게 알 수 있습니까? –

+0

@HarishKumar 로그인 양식으로 실행중인 프로젝트를 감지해서는 안됩니다. 필요한 정보를 생성자 호출에서 인수로 전달하기 만하면됩니다. – FelisCatus

관련 문제