如:有Form1和Form2
Form2中有一Button,它的Click事件改变了一个变量S的值我在Form1中调用Form2,怎么样才能获取这个改变了的S的值我在Form1中这样写:
Form2 f2 = new Form2();
f2.show();S = f2.S;这样写是得不到S的值的,因为Form2中的button的事件没有发生,所以该怎么样才能获取到这个S的值
?
谢谢各位的帮助,谢谢了
Form2中有一Button,它的Click事件改变了一个变量S的值我在Form1中调用Form2,怎么样才能获取这个改变了的S的值我在Form1中这样写:
Form2 f2 = new Form2();
f2.show();S = f2.S;这样写是得不到S的值的,因为Form2中的button的事件没有发生,所以该怎么样才能获取到这个S的值
?
谢谢各位的帮助,谢谢了
public delegate void SChangeEventHandler(int s);//事件处理程序需要的参数列表
public virtual event SChangeEventHandler SChange;//定义自己的事件在Form2中的 Button_Click()中加上
if (SChange != null)
{
SChange(s);
}在 Form1中 Form2 f2 = new Form2();
后加上
f2.SChange += new Form2.SChangeEventHandler(On_SChange);private void On_SChange(int s)
{
//此处在Form1中得到s的值
MessageBox.Show(s.ToString());
}
public delegate void SChangeEventHandler(int s);//事件处理程序需要的参数列表
public virtual event SChangeEventHandler SChange;//定义自己的事件
该怎么用,
public class Info
{
public string S="";
}接着增加Info类型的变量和一个Form2的析构函数,
Info _info;
public From2(Info info)
{
this._info=info;
InitializeComponent();
}
在Form2的按钮事件中更改this._info里面的变量的值就可以了
例如: this._info.S="Button event";最后就可以这样了
Info info=new Info();
Form2 f2 = new Form2(info);
f2.show();
S=info.S;
这样就可以获得!
如果只是想得到变量s的值就比较简单了.
在定义时,需要定义对外公布的属性,以获取变量
如下:
class Form2
{
//参数列表
....
private string s = string.Empty;
// 定义获取s值的属性
public string SValueProperty
{
get
{
return s;
}
}
}然后你在Form1里面就可以取得(new Form2()).SValueProperty的值了.
Form2 frm = new Form2();
frm.Show();之后你取的时候一定要确保这个对象没有被重新创建过,否则,你只能取到SValueProperty的初始值,也就是string.Empty.
不过也不用自定义.只要在button1_Click里面写就好了, private void button1_Click(object sender, System.EventArgs e)
{
s = "aaaaa";
Form1.GetSValue(string s);
}这样作,你需要在Form1里面定义一个公共的static方法,如下:
class Form1
{
....
// 获取s值的方法
public static void GetSValue(string s)
{
// 作你想要的操作
}
}
Flashcom(虫虫)(15)
Kshatriya(无聊) (10)