在Windows窗体中为不同的场景使用相同的表单

时间:2011-11-10 04:54:36

标签: c# winforms

我有一个VS解决方案,其中有几个项目。例如,其中一个标题为“管理”。另一个标题为“运行时”'

如果我将Management设置为默认项目并运行它,则会打开一个名为Scout的应用程序。如果我将Runtime设置为默认项目并运行它,则会打开一个名为PM的应用程序。 需要使用登录表单,我的要求是,必须为两个项目使用相同的登录表单,我必须在名为Data的新项目下创建登录表单,其中可供其他项目使用(运行时和管理) )

我的疑问是,在运行程序时,我需要找出默认运行的项目,然后使用一些动态更新的控件加载登录表单(例如,如果首先执行Runtime proj,则登录表单应具有一个标签"欢迎来到Runtime")如果管理项目首先被执行,登录表格应该有一个标签"欢迎来到管理"

我如何实现这一目标?

1 个答案:

答案 0 :(得分: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.
}