在windows窗体中使用相同的窗体用于不同的场景

本文关键字:窗体 用于 windows | 更新日期: 2023-09-27 18:14:06

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

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

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

我如何做到这一点?

在windows窗体中使用相同的窗体用于不同的场景

我认为重用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.
}