Winforms 使用UserControl登录,然后在主窗体中启用menuStrip
好的,这就是我要做的。 我在C#桌面应用程序中有一个主窗体,其中有一个menuStrip和一个splitContainer。 在运行应用程序时,我正在将名为“Login”的UserControl加载到splitContainer.Panel2,同时隐藏menuStrip。登录控件包含用户名、密码和登录按钮字段 一旦通过身份验证(单击按钮),我想在splitContainer.Panel2中启用menuStrip并允许其他用户控件,同时隐藏登录控件 我如何做到这一点?我试图从登录控件触发一个事件,并以某种方式使其在主窗体中工作,但无法实现。 这种方法值得尝试吗?还是应该单独打开多个表单(我不想这样做!)Winforms 使用UserControl登录,然后在主窗体中启用menuStrip,winforms,user-controls,splitcontainer,Winforms,User Controls,Splitcontainer,好的,这就是我要做的。 我在C#桌面应用程序中有一个主窗体,其中有一个menuStrip和一个splitContainer。 在运行应用程序时,我正在将名为“Login”的UserControl加载到splitContainer.Panel2,同时隐藏menuStrip。登录控件包含用户名、密码和登录按钮字段 一旦通过身份验证(单击按钮),我想在splitContainer.Panel2中启用menuStrip并允许其他用户控件,同时隐藏登录控件 我如何做到这一点?我试图从登录控件触发一个事
关于如何更改splitContainer.Panel2中的视图(而不是将面板一个叠在另一个上,这对我来说将是一个设计噩梦),同时保持splitContainer.Panel1具有相同内容的任何更干净的方法。您的尝试听起来应该是有效的 您是在设计时还是通过代码添加登录控件 这里有一个通过代码创建的示例…对我来说效果很好 表格1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
menuStrip1.Visible = false;
Login login = new Login();
login.Authenticated += new EventHandler(login_Authenticated);
splitContainer1.Panel2.Controls.Add(login);
}
void login_Authenticated(object sender, EventArgs e)
{
Login login = (Login)sender;
// ... possibly extract some info from "login" ...
menuStrip1.Visible = true;
login.Dispose();
}
}
登录用户控件:
public partial class Login : UserControl
{
public Login()
{
InitializeComponent();
}
public event EventHandler Authenticated;
private void btnLogin_Click(object sender, EventArgs e)
{
if (true) // if they have authenticated
{
if (Authenticated != null) // only raise the event if we have subscribers
{
Authenticated(this, new EventArgs());
}
}
}
}
一个活动会很完美。表单将订阅UserControl事件,然后适当地切换控件。“活动法”有什么困难吗?@Idle\u Mind谢谢你的建议。IDK,事件不起作用。也许我做得不对,因为我参考了一些教程。在我声明的登录控制类中:public委托void EventHandler(objectsender,EventArgs e);已验证的公共事件事件处理程序;在登录按钮上,单击:如果用户已通过db i do:1的身份验证。已验证(这是新的System.EventArgs());或2。本。已认证(本,e);在我尝试执行的主要表单类上:Login.EventHandler=neweventhandler(Authenticated);因为它应该根据教程工作而感到困惑。