父窗体调用子窗体内的一个方法,方法改变一个文本框的值(反射)

gulx 2012-04-09 10:10:13
父窗体调用一个已打开的子窗体,用反射执行激活子窗体的一个方法,该方法改本一个文本框的值,我已能实现调用到子窗体内的方法,可是文本框的值就是改变不了,放一个MessageBox也能弹出来,代码如下:
父窗体
private void dockPanel1_ActiveDocumentChanged(object sender, EventArgs e)
{
DockPanel aa = (WeifenLuo.WinFormsUI.Docking.DockPanel)(sender);
Form CC = (Form)aa.ActiveDocument;
Type type = CC.GetType();
object obj = type.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, new object[] { });

//调用没有返回值的方法
//运行之后的结果[Hello World]
try
{
type.InvokeMember("button2_Click1", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance, null, obj, null);
}
catch (Exception EE)
{
MessageBox.Show(EE.Message, "系统提示!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
子窗体
public void button2_Click1()
{
this.textBox1.Text = "111";
MessageBox.Show("eee");

}
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
铜臂阿铁木 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

能否说清楚一点
[/Quote]
私信不知怎么的发不过去。

这个原因是,你调用的方法与正在显示的窗体并不是同一个对象。
使用GetType确实能得到一个方法,也能够调用。
假如aa.Click1是你想调用的,使用Type.InvokeMember("Click1")只不过是说你要调用Click1的方法,这并不是aa.Click1.

想要调用Click1为什么不直接aa.click1, 还要用反射呢?
www7788softcom 2012-04-09
  • 打赏
  • 举报
回复
就这么点事为嘛要反射?不能弄得简单点么
www7788softcom 2012-04-09
  • 打赏
  • 举报
回复
就这么点事为嘛要反射?不能弄得简单点么
gulx 2012-04-09
  • 打赏
  • 举报
回复
能否说清楚一点
铜臂阿铁木 2012-04-09
  • 打赏
  • 举报
回复
hi 此对象非彼对象。
patrickpan 2012-04-09
  • 打赏
  • 举报
回复
不用反射,用委托时间:
主窗体:
[code=C#]
private void ChangeTextBox(string test)
{
textBox1.Text = test;
}

.....
Form2 frm = new Form2();
frm.ChangeTextBoxHandlerEvent += new Form2.ChangeTextBoxHandler(ChangeTextBox);
[/Code]
子窗体:
[code=C#]
public delegate void ChangeTextBoxHandler(string test);
public event ChangeTextBoxHandler ChangeTextBoxHandlerEvent;

//改变值的方法:
if(ChangeTextBoxHandlerEvent != null)
{
ChangeTextBoxHandlerEvent(value);
}
[/Code]
mabaolin 2012-04-09
  • 打赏
  • 举报
回复
把Form改成单例模式

111,126

社区成员

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

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

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