首页 新闻 会员 周边

如何在其他窗体中修改主窗体控件的属性

0
悬赏园豆:100 [已解决问题] 解决于 2017-02-06 18:26

我使用winform制作软件登录时的权限控制,主窗体(MDI窗体)上设置有不同的功能菜单,根据登录用户的账号自动改变主窗体上功能菜单的显示。但我不知道在登录窗体(子窗体)中如何去修改主窗体实例的属性。

求指点!

蓝领书生的主页 蓝领书生 | 初学一级 | 园豆:100
提问于:2017-01-21 16:22
< >
分享
最佳答案
1

举个在子窗体改变主窗体标题名称的例子:

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("天黑了,洗洗睡吧");



收获园豆:80
JoiWilliam | 小虾三级 |园豆:546 | 2017-01-21 21:18

谢谢!

蓝领书生 | 园豆:100 (初学一级) | 2017-01-22 14:12

不推荐用delegate,使用泛型委托方便

ChuckLu | 园豆:514 (小虾三级) | 2017-02-06 18:28
其他回答(6)
1

子窗体 写事件,然后主窗体触发,然后就可以改了。

收获园豆:2
☆绿茶☆ | 园豆:76 (初学一级) | 2017-01-21 17:46
0

用树形菜单控制用户的权限问题

收获园豆:2
LangDeYeXing | 园豆:206 (菜鸟二级) | 2017-01-21 19:57
0

Mdi子窗体 FormChild添加一个属性比如 public  FormMain  parentForm,属性类型 是主窗口类型,有get,set属性。

让 主窗体show()子窗体的时候,让子窗体的 属性指向 主窗体 ,   FormChild.parentForm=this;此时你就能访问主窗体了

收获园豆:4
hello,逗比 | 园豆:203 (菜鸟二级) | 2017-01-22 01:48
0

可以在数据库中设置权限,根据登录的用户来获取他的权限。

例如

 姓名  密码   权限

 张三  aa      管理员(0)

赵四   aa    超级管理员(1)

王五   bb   普通用户(2)

这样

然后在登录之后将权限设为Cookie传到主界面获取。

然后主界面根据获取到的Cookie 来判断权限,显示或者隐藏什么功能就随你意了

收获园豆:4
夜里挑键戳灯 | 园豆:299 (菜鸟二级) | 2017-01-22 09:53
0

登录窗体只是说明这个人可以进来.

转到主窗体后,在主窗体加载的时候,处理权限.

收获园豆:4
forhells | 园豆:724 (小虾三级) | 2017-01-24 08:34
0

 

1.用单例写一个EventManager类,

2.用EventHandler<T> 写一个事件,T的话,是一个自定义类,用来封装参数的,

3.在主窗体注册事件,

4.在子窗体触发事件,并通过T把需要的东西传递过去,这样主窗体就可以处理了

 

不仅仅是子窗体和父窗体之间可以这么传递数据,2个类之间都可以这么做

关于事件的处理,看这篇文章

https://msdn.microsoft.com/en-us/library/edzehd2t(v=vs.110).aspx

 

收获园豆:4
ChuckLu | 园豆:514 (小虾三级) | 2017-02-06 18:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册