子窗口控制父窗口的菜单控件的可用性

FWSH 2011-11-06 06:58:24
子窗口打开后,父窗口中菜单控件的enable可以设为false,从而使这个菜单项不可用。现在想在子窗口关闭后,让父窗口中的这个菜单项恢复为可用,本人初学,能举例子吗?谢谢各位!

...全文
124 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
javabegin 2011-11-08
子窗口添加FormClosed事件里面写。

public void ShowChildForm()
{
ChildForm frm=new ChildForm();
frm.FormClosed+=new new FormClosedEventHandler(frm_FormClosed);
frm.Show();
}

void frm_FormClosed(object sender, FormClosedEventArgs e)
{
//菜单恢复可用
}
  • 打赏
  • 举报
回复
nefulwp 2011-11-08
最简单的方法就是声明一个bool静态变量,菜单的可用性由bool变量决定,关闭子窗体时将bool设为true,同时重绘下主窗体。
  • 打赏
  • 举报
回复
ijwsoft 2011-11-08
[Quote=引用 7 楼 fwsh 的回复:]
6楼的大大
//2.在子窗体中调用上面的属性 ((frmMain)this.ParentForm).MnuEnabled= true;
里面的 frmMain 指的是什么窗体呀?
[/Quote]

frmMain 当然是你的父窗体。
  • 打赏
  • 举报
回复
accomp 2011-11-08
1,父窗体写个public 函数
Public void SetEnable()
{
this.****.Enabled = True;
}

2. 子窗体关闭时候调用它即可
  • 打赏
  • 举报
回复
yth126 2011-11-08
楼主可以参考下楼5的,我就是用的这种方法,是可以实现楼主的想法的
  • 打赏
  • 举报
回复
ijwsoft 2011-11-07

//分2步进行:
//1.在父窗体中建一个public型的属性或方法
private bool _bMnuEnabled = false;
public bool MnuEnabled
{
get{return _bMnuEnabled;}
set
{
_bMnuEnabled =value;
this.菜单名.Enabled=_bMnuEnabled;
}
}

//2.在子窗体中调用上面的属性
((frmMain)this.ParentForm).MnuEnabled= true;
  • 打赏
  • 举报
回复
yth126 2011-11-07
FORM1中的代码,声明FORM2让FORM2的Owner等于FORM1
ContractForm contractForm = new ContractForm();
contractForm.Owner = this;
contractForm.Show();
FORM2中的代码
FORM1的可用状态设置: this.Owner.Enabled = true;
FORM1中控件的状态设置:this.Owner.Controls["Controls_Name"].Enabled = true;
  • 打赏
  • 举报
回复
FWSH 2011-11-07
按六楼的原文,代码根本没有起到任何作用;是不是还有其他的代码没写出来呀
  • 打赏
  • 举报
回复
FWSH 2011-11-07
主窗体吗?运行是通过了,但菜单改变了恢复不过来
  • 打赏
  • 举报
回复
FWSH 2011-11-07
6楼的大大
//2.在子窗体中调用上面的属性 ((frmMain)this.ParentForm).MnuEnabled= true;
里面的 frmMain 指的是什么窗体呀?
  • 打赏
  • 举报
回复
长江 2011-11-06
把你的MainMenu1设置成public
 private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
}





private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Form1 f1 = (Form1)this.Owner;
//这里就可以用f1.MainMenu1访问了
}


  • 打赏
  • 举报
回复
FWSH 2011-11-06
我用的是.net2003,楼上的方法运行通不过。
  • 打赏
  • 举报
回复
长江 2011-11-06
Form1中添加菜单menuStrip1

public MenuStrip Form1MainMenu
{
get
{
return this.menuStrip1;
}
}
private void Form1_Load(object sender, EventArgs e)
{
menuStrip1.Items.Add("删除");
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
}


Form2中加一按钮

private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = (Form1)this.Owner;
f1.Form1MainMenu.Items[0].Enabled = false; //菜单不可用
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
//菜单可用
Form1 f1 = (Form1)this.Owner;
f1.Form1MainMenu.Items[0].Enabled = true;
}

  • 打赏
  • 举报
回复
yth126 2011-11-06
我以前做过,只是现在想不起来了,明天要是有时间就帮你看看吧
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2011-11-06 06:58
社区公告

让您成为最强悍的C#开发者