winform中询问一个子窗口操作主窗体上的控件的问题

七块五 2011-03-31 05:11:09
http://blog.csdn.net/Knight94/archive/2006/08/22/1104957.aspx
http://blog.csdn.net/knight94/archive/2006/03/18/628285.aspx
参考了这两篇文章,但是没怎么看懂

比如说主窗口F1,子窗口F2
F1中有个函数refDate(string strWhere)
在F2.ShowDialog()后,要将F2中的一些内容做为strWhere,并运行refDate
...全文
1091 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
q1025735131 2012-02-17
  • 打赏
  • 举报
回复
怎么越看越糊涂了呢?。。。
BurgessLi 2011-06-08
  • 打赏
  • 举报
回复
初学者表示看起来困难
cfvgodot 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pcqpzq 的回复:]

功能实现了,可惜走弯路了

[/Quote]

我也觉得这玩意听绕的!
七块五 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cfvgodot 的回复:]

没看明白啥玩意。。。。我自己给你写吧!

主窗体代码

C# code

public void refDate(string strWhere)
{
//do something
}
//添加一个按钮CLICK响应方法,显示子窗体
private void btnAddUser_Click(object sender, EventArgs e)
{
Form2 fm2=ne……
[/Quote]
原来是这么用的,谢谢了.

可能是我没说清楚,也谢谢其他的几位朋友
纯唇Yu弄 2011-04-01
  • 打赏
  • 举报
回复
6楼的可以
dodducs 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pcqpzq 的回复:]

引用 7 楼 xiongxyt2 的回复:
举个简单例子


窗体间传值(From2的Button事件将From2中的textbox1的text值传给From1的lable)
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm……
[/Quote]


你总说别人的不对,你没发现你把主窗体 this 直接扔过去,危险性多大么
想想人家为什么用委托再说吧,,,还弯路,,晕……
pcqpzq 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiongxyt2 的回复:]
举个简单例子


窗体间传值(From2的Button事件将From2中的textbox1的text值传给From1的lable)
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new ……
[/Quote]
功能可以实现
但是是不规范代码,如果不是Form1调用Form2就会报错
xiongxyt2 2011-03-31
  • 打赏
  • 举报
回复
举个简单例子


窗体间传值(From2的Button事件将From2中的textbox1的text值传给From1的lable)
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;//得到父窗体对象,之后可以用它操作父窗体了。
((Label)frm1.Controls["label1"]).Text = this.textBox1.Text;
this.Close();
}
}
zilong4460072 2011-03-31
  • 打赏
  • 举报
回复
你在Form2中写公共变量StrWhere,strWhere,Form2关闭之前给strWhere赋值

private String strWhere = string.Empty;

public String StrWhere
{
get
{
return this.strWhere ;
}
}


Form2关闭后运行取得Form2中的StrWhere字段就行了


Form2 form2 = new Form2 ();
form2.ShowDialog();
refDate(form2.StrWhere);

pcqpzq 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cfvgodot 的回复:]
没看明白啥玩意。。。。我自己给你写吧!

主窗体代码


C# code

public void refDate(string strWhere)
{
//do something
}
//添加一个按钮CLICK响应方法,显示子窗体
private void btnAddUser_Click(object sender, EventArgs e)
{
For……
[/Quote]

功能实现了,可惜走弯路了
cfvgodot 2011-03-31
  • 打赏
  • 举报
回复
额。。。脑残了。。。那啥。。。第一个是父窗体,第二个是子窗体!!!打错了。。。
cfvgodot 2011-03-31
  • 打赏
  • 举报
回复
没看明白啥玩意。。。。我自己给你写吧!

主窗体代码


public void refDate(string strWhere)
{
//do something
}
//添加一个按钮CLICK响应方法,显示子窗体
private void btnAddUser_Click(object sender, EventArgs e)
{
Form2 fm2=new Form2();
fm2.TestDelegate=this.refDate;
fm2..ShowDialog();
}


父窗体:

//定义委托
public delegate void NewDelegate(string strWhere);
public NewDelegate TestDelegate;

private void btnAddUser_Click(object sender, EventArgs e)
{
TestDelegate(strWhere);
}

pcqpzq 2011-03-31
  • 打赏
  • 举报
回复
F2.cs************************

private F1 PaForm;
public F2(F1 paForm)
{
PaForm=paForm;
}

private void button1_click(。。。)
{
PaForm.refDate(this....);
}

F1.cs************************

private void refDate(string str)
{
。。。。
}

private void button1_click(。。。)
{
F2 f2=new F2(this);
F2.ShowDialog;
}
cfvgodot 2011-03-31
  • 打赏
  • 举报
回复
没看文章,我知道用委托能实现。。。我看看文章先

110,534

社区成员

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

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

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