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

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

...全文
141 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
我以前做过,只是现在想不起来了,明天要是有时间就帮你看看吧

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧