在winform应用程序中打开带有表单名称的表单
本文关键字:表单 winform 应用程序 | 更新日期: 2023-09-27 18:01:37
我想问我应该怎么做打开窗体与帮助或类名在winformc# ?
我有三种不同的形式
- UserManagement
- GroupsManagement
- LocationManagement
我得到了数据库对这三个表单的许可
在菜单中单击i填充标签属性与表单的名称像这样
tsmMain.Tag = item.PermissionName
tsmMain.Click += new EventHandler(tsmMain_Click);
我想做的是在按钮点击中动态打开表单并删除这些if条件?我可以做这个反射或其他??
ToolStripMenuItem aa = sender as ToolStripMenuItem;
var tag = aa.Tag;
if (tag == "User Management")
{
UserManagement oUserForm = new UserManagement();
oUserForm.Show();
}
if (tag == "Groups Management")
{
GroupManagement oGroupForm = new GroupManagement();
oGroupForm.Show();
}
您可以这样做,使用表单的名称作为字符串参数:
var form = (Form)Activator.CreateInstance(Type.GetType("YourNameSpace.UserManagement"));
form.Show();
一个直接但不一定非常干净的解决方案是将表单存储在菜单项的Tag
属性中,而不是字符串中。
在应用程序开始的某个地方,您必须分配这些实例:
myUserManagementItem.Tag = new UserManagement();
myGroupsManagementItem.Tag = new GroupManagement();
然后,在click事件中,您可以将代码缩短为:
ToolStripMenuItem aa = sender as ToolStripMenuItem;
Form form = aa.Tag as Form;
form.Show();
更清洁的解决方案将包括以下内容:
- 为不同的菜单项提供单独的事件处理程序。
- 派生您自己的菜单项类型来存储要在强类型属性中显示的表单。