1、首先在子窗体的类中定义一个委托并注册
public delegate void TextHandler(string text);
public TextHandler ChangeFormTitle;
2、然后在主窗体实例化子窗体时添加事件
Form f = new Form();
f.ChangeFormTitle += c => this.Text = c;
f.Show();
3、最后在子窗体触发改变标题的事件中调用
ChangeFormTitle("天黑了,洗洗睡吧");
谢谢!
不推荐用delegate,使用泛型委托方便
子窗体 写事件,然后主窗体触发,然后就可以改了。
用树形菜单控制用户的权限问题
Mdi子窗体 FormChild添加一个属性比如 public FormMain parentForm,属性类型 是主窗口类型,有get,set属性。
让 主窗体show()子窗体的时候,让子窗体的 属性指向 主窗体 , FormChild.parentForm=this;此时你就能访问主窗体了
可以在数据库中设置权限,根据登录的用户来获取他的权限。
例如
姓名 密码 权限
张三 aa 管理员(0)
赵四 aa 超级管理员(1)
王五 bb 普通用户(2)
这样
然后在登录之后将权限设为Cookie传到主界面获取。
然后主界面根据获取到的Cookie 来判断权限,显示或者隐藏什么功能就随你意了
登录窗体只是说明这个人可以进来.
转到主窗体后,在主窗体加载的时候,处理权限.
1.用单例写一个EventManager类,
2.用EventHandler<T> 写一个事件,T的话,是一个自定义类,用来封装参数的,
3.在主窗体注册事件,
4.在子窗体触发事件,并通过T把需要的东西传递过去,这样主窗体就可以处理了
不仅仅是子窗体和父窗体之间可以这么传递数据,2个类之间都可以这么做
关于事件的处理,看这篇文章
https://msdn.microsoft.com/en-us/library/edzehd2t(v=vs.110).aspx