C#反射调用方法后仅textBox1有输出,为何textBox2无内容?
问题原因与解决办法
问题核心在于你通过new Form1()创建了一个全新的Form1窗体实例,而非操作当前正在显示的那个窗体。当你调用这个隐藏的新实例的MyMethod时,textBox2.Text的赋值只会作用在这个不可见的新窗体上,自然看不到预期的效果;而textBox1的赋值是在当前窗体上执行的,所以能正常显示。
解决方法
直接使用当前窗体的实例(this)来执行反射调用,替换掉新创建的实例:
private void xx() { Type type = typeof(Form1); System.Reflection.MethodInfo method = type.GetMethod("MyMethod"); // 使用当前窗体实例this,而非新创建的Form1对象 string result = (string)method.Invoke(this, null); textBox1.Text = result; }
这样修改后,MyMethod会在当前显示的窗体上执行,textBox2就能正常显示指定文本了。
内容的提问来源于stack exchange,提问作者Dave603
相关产品推荐
相关产品推荐

