8 个解决方案
#1
用静态变量或者静态函数
#2
定义事件
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
#3
可以使用楼上说的那样:窗体1的textbox控件变量设置为静态公有,在点击窗体2上的BUTTON时将得 到的值传给窗体1的textbox变量!这样做直接,但程序结构不太好!采用静态函数能好一点!
另外你可以采用对象的方式,在构造窗体2的时候(或其他方式)得到窗体1的对象,通过对象的方式来访问窗体1的变量,在这里就是textbox的属性了
另外你可以采用对象的方式,在构造窗体2的时候(或其他方式)得到窗体1的对象,通过对象的方式来访问窗体1的变量,在这里就是textbox的属性了
#4
使用事件的机制是最好的方法!!!
#5
form2 mfrm=new form2();
if(form2.ShowDialog()==diaglautld.OK)
text1.text=form2.publicvalue;
if(form2.ShowDialog()==diaglautld.OK)
text1.text=form2.publicvalue;
#6
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
楼上说的很不错
你把你的textbox用一个静态变量来操控
就可以了
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
楼上说的很不错
你把你的textbox用一个静态变量来操控
就可以了
#7
还可以用构造方法传,简单。
#8
CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢?
网络上有几种方法,先总结如下:
调用窗体(父):Form1,被调用窗体(子):Form2
方法1: 所有权法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//在调用Form2时,要把Form2的所有者设为Form1
Form2 f2 = new Form2() ;
f2.Owner = this;
f2.ShowDialog() ;
//Form2:
//在需要对其调用者(父)刷新时
Form1 f1 ;
f1 = (Form1)this.Owner;
f1.Refresh_Method() ;
方法2:自身传递法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
Form2 f2 = new Form2() ;
f2.ShowDialog(this) ;
//Form2:
private Form1 p_f1;
public Form2(Form1 f1)
{
InitializeComponent();
p_f1 = f1;
}
//刷新时
p_f1.Refresh_Method() ;
方法3:属性法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.P_F1 = this;
f2.Show() ;
//Form2:
private Form1 p_f1;
public Form1 P_F1
{
get{return p_f1;}
set{p_f1 = value;}
}
//刷新时
p_f1.Refresh_Method() ;
方法4:委托法
//声明一个委托
public delegate void DisplayUpdate();
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
f2.Show() ;
//Form2:
//声明事件
public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里
ShowUpdate();
#1
用静态变量或者静态函数
#2
定义事件
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
#3
可以使用楼上说的那样:窗体1的textbox控件变量设置为静态公有,在点击窗体2上的BUTTON时将得 到的值传给窗体1的textbox变量!这样做直接,但程序结构不太好!采用静态函数能好一点!
另外你可以采用对象的方式,在构造窗体2的时候(或其他方式)得到窗体1的对象,通过对象的方式来访问窗体1的变量,在这里就是textbox的属性了
另外你可以采用对象的方式,在构造窗体2的时候(或其他方式)得到窗体1的对象,通过对象的方式来访问窗体1的变量,在这里就是textbox的属性了
#4
使用事件的机制是最好的方法!!!
#5
form2 mfrm=new form2();
if(form2.ShowDialog()==diaglautld.OK)
text1.text=form2.publicvalue;
if(form2.ShowDialog()==diaglautld.OK)
text1.text=form2.publicvalue;
#6
窗体2
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
楼上说的很不错
你把你的textbox用一个静态变量来操控
就可以了
public delegate void SampleEventDelegate(string s);
public event SampleEventDelegate SampleEvent;
private void button1_Click(object sender, EventArgs e)
{
if (SampleEvent != null)
{
SampleEvent("test");
this.Close();
}
}
窗体1
private void showtext(string s)
{
MessageBox.Show(s);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.SampleEvent+= new Form2.SampleEventDelegate(showtext);
f.ShowDialog();
}
楼上说的很不错
你把你的textbox用一个静态变量来操控
就可以了
#7
还可以用构造方法传,简单。
#8
CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢?
网络上有几种方法,先总结如下:
调用窗体(父):Form1,被调用窗体(子):Form2
方法1: 所有权法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//在调用Form2时,要把Form2的所有者设为Form1
Form2 f2 = new Form2() ;
f2.Owner = this;
f2.ShowDialog() ;
//Form2:
//在需要对其调用者(父)刷新时
Form1 f1 ;
f1 = (Form1)this.Owner;
f1.Refresh_Method() ;
方法2:自身传递法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
Form2 f2 = new Form2() ;
f2.ShowDialog(this) ;
//Form2:
private Form1 p_f1;
public Form2(Form1 f1)
{
InitializeComponent();
p_f1 = f1;
}
//刷新时
p_f1.Refresh_Method() ;
方法3:属性法
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.P_F1 = this;
f2.Show() ;
//Form2:
private Form1 p_f1;
public Form1 P_F1
{
get{return p_f1;}
set{p_f1 = value;}
}
//刷新时
p_f1.Refresh_Method() ;
方法4:委托法
//声明一个委托
public delegate void DisplayUpdate();
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
f2.Show() ;
//Form2:
//声明事件
public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里
ShowUpdate();