在windows窗体中使用相同的窗体用于不同的场景
本文关键字:窗体 用于 windows | 更新日期: 2023-09-27 18:14:06
我有一个VS解决方案,其中有几个项目。例如,其中一个标题为"管理",另一个标题为"运行时"
如果我将Management设置为默认项目并运行它,将打开一个名为Scout的应用程序。如果我将Runtime设置为默认项目并运行它,将打开一个名为PM的应用程序。有使用登录表单的要求,我的要求是,相同的登录表单必须用于两个项目,我必须创建一个名为Data的新项目下的登录表单,它可供其他两个项目(运行时和管理)使用
我的疑问是,在运行程序时,我需要找出哪个项目是默认运行的,然后用一些动态更新的控件加载登录表单(例如,如果运行时项目首先执行,登录表单应该有一个标签"欢迎运行时"),如果管理项目首先执行,登录表单应该有一个标签"欢迎管理"
我如何做到这一点?
我认为重用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.
}