B窗体的事件中更改A窗体中控件的属性,我这样做有什么不对?(winform)
Form_B中:
public delegate void SendMess ( string str ) ;
//定义委托类型
public event SendMess Send ;
//定义一个事件类型
private void button1_Click(object sender, System.EventArgs e)//触发Form_A中的Send事件修改属性
{
Form2 f2 = new Form2();
f2.Send += new Form2.SendMess(Send);
}
Form_A中:
private Form_B myForm = new Form_B ( ) ;
myForm.Send += new Form2.SendMess ( Send ) ;
private void Send ( string str )
{
textBox1.Enable = Enabled ;
//把textBox1控件的Enable属性置为false
}
但是没有反应,请问我什么地方错了?如何修改?
问题点数:20、回复次数:17Top
1 楼oldbee01(老蜜蜂)回复于 2005-12-22 08:28:29 得分 0
顶Top
2 楼kknd2005(人生有两种遗憾:一种是没得到,一种是得到了)回复于 2005-12-22 09:01:49 得分 2
你的逻辑混乱Top
3 楼oldbee01(老蜜蜂)回复于 2005-12-22 09:25:39 得分 0
该是怎样的?Top
4 楼hl_ws(小数点)回复于 2005-12-22 09:58:50 得分 5
Form_B中:
public delegate void SendMess ( string str ) ;
//定义委托类型
public event SendMess Send ;
//定义一个事件类型
private void button1_Click(object sender, System.EventArgs e)//触发Form_A中的Send事件修改属性
{
Form2 f2 = new Form2();
f2.Send += new Form2.SendMess(SendState);
}
Form_A中:
private Form_B myForm = new Form_B ( ) ;
myForm.Send += new Form2.SendMess ( SendState ) ;
private void SendState ( string str )
{
textBox1.Enable = Enabled ;
//把textBox1控件的Enable属性置为false
}
你要注意方法与委托的引用相同了,而且方法的传入string,没有用过Top
5 楼oldbee01(老蜜蜂)回复于 2005-12-22 10:41:50 得分 0
到底错在什么地方?Top
6 楼oldbee01(老蜜蜂)回复于 2005-12-22 10:42:05 得分 0
顶Top
7 楼copall(<民工>席卷天下-包举宇内-囊括四海-并吞八荒!)回复于 2005-12-22 11:09:38 得分 1
private void Send ( string str )
{
textBox1.Enable = Enabled ;
//把textBox1控件的Enable属性置为false
}
这句中的private 改为public试试Top
8 楼oldbee01(老蜜蜂)回复于 2005-12-22 11:18:12 得分 0
没用Top
9 楼wydcs(天外来痴)回复于 2005-12-22 12:20:56 得分 5
你的逻辑非常的混乱,真是没有办法说了,我是学VB.NET的,我刚查了一下C#事件处理步骤,靠,你的非常非常的糟糕,首先:你还不明白怎样注册一个事件;f2.Send += new SendMess(methodname);括号里是事件处理的方法(已经省掉了监听程序,因为你只对f2有效)。
其次:你都没有写处理程序,就是methodname的方法,在这个方法里处理A窗体的是属性Top
10 楼oldbee01(老蜜蜂)回复于 2005-12-22 15:57:35 得分 0
有完整一点的说明吗?Top
11 楼zhzuo(秋枫)回复于 2005-12-22 21:58:14 得分 1
try
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspxTop
12 楼oldbee01(老蜜蜂)回复于 2005-12-23 10:47:04 得分 0
各位大大,我需要用事件来交互,我该怎样做?Top
13 楼oldbee01(老蜜蜂)回复于 2005-12-26 09:20:49 得分 0
没人会吗?Top
14 楼oldbee01(老蜜蜂)回复于 2005-12-26 09:51:57 得分 0
顶Top
15 楼jy757443(猫猫要努力)回复于 2005-12-26 09:57:29 得分 5
private void button1_Click(object sender, System.EventArgs e)//触发Form_A中的Send事件修改属性
{
Form2 f2 = new Form2();
f2.Send += new Form2.SendMess(SendState);
}
你这个传递的是什么东西?
应该是传递
private void button1_Click(object sender, System.EventArgs e)//触发Form_A中的Send事件修改属性
{
Send("字符串");//应该是传递Send
}
记到给分,我这个是可以传递的你不要骗人哈
Top
16 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2005-12-26 10:22:26 得分 1
private void button1_Click(object sender, System.EventArgs e)//触发Form_A中的Send事件修改属性
{
if (Send != null)
{
Send("");
}
}
Top
17 楼oldbee01(老蜜蜂)回复于 2005-12-28 17:35:03 得分 0
虽然不懂,但还是谢谢Top




