C#中父窗体和子窗体的问题

神赐书宝 2009-12-12 09:39:07
比如父窗体form1中有一个button1控件 在程序运行的时候 子窗体form2是显示出来的 button1.Enabled = false; 然后把子窗体关闭掉 要让 button1可用

我是到父窗体的 Designer.cs中 的 InitializeComponent() 方法前面的 那个 private 改成 public

同时下面 的 #endregion 里面的 对应button1的 也给成 public

然后在 子窗体的 关闭事件里面 form1 f1=new form1();

f1.button1.enable=true;

这样子好像有点问题 谁能帮帮忙呀
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gghlkk 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 projectdd 的回复:]

    form2.Disposed+=delegate{
        this.button1.Enable=true;
    };
[/Quote]
干练!
神赐书宝 2009-12-13
  • 打赏
  • 举报
回复
我是用VS2005的
from1是MDI父窗体 from2是 from1的一个子窗体 在from1中有个 button1 按钮控件
from1的加载事件代码是 from2 f2=new from2();
f2.MdiParent=this;
f2.Show();
button1.Enable=false;
我是想在 from2的 FormClosed 事件中 让from1中的 button1按钮恢复可用状态

我把 from1中的 控件都设置成public
wisejohn 2009-12-13
  • 打赏
  • 举报
回复
Mark,楼上很帅。
li121201391 2009-12-13
  • 打赏
  • 举报
回复
class Form1:Form{
Button button1;
public Form1(){
this.button1=new Button();
this.button1.Click+=this.button1_Click;
}
void button1_Click(object sneder,EventArgs e){
this.button1.Enable=false;
YourForm form2=new YourForm();
form2.Disposed+=delegate{
this.button1.Enable=true;
};
form2.ShowDialog();
}
}
ProjectDD 2009-12-12
  • 打赏
  • 举报
回复
class Form1:Form{
Button button1;
public Form1(){
this.button1=new Button();
this.button1.Click+=this.button1_Click;
}
void button1_Click(object sneder,EventArgs e){
this.button1.Enable=false;
YourForm form2=new YourForm();
form2.Disposed+=delegate{
this.button1.Enable=true;
};
form2.ShowDialog();
}
}

//
这是利用C#3.0中的闭包解决方案来简明解决的,中心意思就是在Disposed时做你想做的,这是窗体卸载时
可以做的事情
wuyq11 2009-12-12
  • 打赏
  • 举报
回复
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);
}
}

public partial class Form2 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
this.Close();
}
}
苏飞论坛 2009-12-12
  • 打赏
  • 举报
回复
你应该是这样写的,


button1.Enabled = false;这样写是对了, 但是下面一个你写不对,应该是这样



你先在Form2里定义一个变量

//不要New啊
Form1 objform1;

然后在Form2关闭的事件里写
f1.button1.enable=true;


但是是你Form1里调用Form2的事件里应该这样写的
form2 f2=new form2();
//这样代表两个窗体用的是同一个实例,也只有这样才能实现你的效果, 试试吧
f2.objform1=this;

110,534

社区成员

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

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

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