我想在窗口B的某个按钮被按下后,即向窗口A的文本框txtA内写一个字符串,请问窗口B的代码该如何写呢?
我用frmA.ActiveForm.txtA,却发现txtA不存在,请教高手!
我用frmA.ActiveForm.txtA,却发现txtA不存在,请教高手!
解决方案 »
- C# 创建一个无路径的记事本 并在编辑区添加字符串
- 这样的ListBox功能是怎么设置的?
- StreamWriter的资源释放不了
- SOCKET异步通信中为什么要使用回调函数?
- Infragistics NetAdvantage 2004 Volume 2 下多表头的问题
- B/S项目,新建一个文件夹,要怎样在其它类中使用文件夹中的类,using路径应该怎样写?
- 求一简单的JS脚本。
- 这样格式字符串为什么效果是一样的
- 问个正则表达式
- 如何实现vs2008类关系图那样的界面?!
- 同时安装vs2003.NET 和vs2005.NET 有没有什么问题啊????
- 关于事件触发的问题!SOCKET网络编程。
你这个frmA是什么啊?是你实例化后赋值的窗口A类型的变量吗?
如果窗口B是在窗口A中创建的,当然可以操作了,否则需要穿参或者委托操作了。
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();
再在B窗体中访问
在B窗口设置一个ATextBox属性A窗口打开B窗口:
BForm frm = new BForm ();
frm.ATextBox = this.textBox1;
frm.ShowDialog();B窗口操作后,你直接在B窗口中设置ATextBox .Text="abc";方法二:
观察者模式,请参考书
http://blog.csdn.net/flygoldfish
定义窗体属性
比如:
f1调用f2
在f2中定义访问器如下:
public ControlType Name
{
set{ControlName = value;}
get{return ControlName;}
}
在f1中只要实例化f2
然后f2.Name.属性或方法名
_________________________
ok
简单实用