不可行,静态方法不能调用非静态的
建议把 form 或者函数当参数传入静态方法

解决方案 »

  1.   

    额,我表示蛋疼,你知道他是什么那就new呗不要滥用反射,反射是用在你不知道他神马滴情况,你都知道他是什么,直接请直接new,你还真以为反射就不用new么,在你这里反射滴第一步就是先实例然后调用方法你这里错就是这里,你有form1滴实例么,没有。实例为null,反射个什么啊,他会诅咒你“你的对象为null”
      

  2.   

    调用 实例方法,请new一个实例
      

  3.   

    new  一个吧  ,没必要用反射 
      

  4.   

    MethodInfo test = typeof(Form1).GetMethod("AddMsg", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                if (test == null)
                {
                    return;
                }
                test.Invoke(new Form1(),null);
      

  5.   

    额,估计下面不会有什么回复了在有什么回复,我估计你也不会接受了。这玩意和你是不是在一个class里没半毛钱关系,非静态方法必须要有一个实例,哪怕你是在一个class里面。说到这里已经够了,如果你还是无法理解,那么后面滴人也没办法和你说什么
      

  6.   

    你们说的是没错,但是文本框没有显示出来我要结果呀。上代码using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace REDF.Utils.MOXA
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                M2K_getUdpMessage();
            }        public static void M2K_getUdpMessage()
            {
                string szShowData = "hello";
                Form2 frm = new Form2();
                frm.AddMsg(szShowData);
            }        public void AddMsg(string msg)
            {
                textBox1.Focus();
                textBox1.Text = msg;
                //Console.WriteLine("hello");
                this.Refresh();
            }
        }
    }
      

  7.   


    你看没看我想要的结果?你说的对,那样调用是没问题,但是这样也不能把想要的结果在当前页面的TextBox显示呀?
      

  8.   

    Form2 frm = new Form2();错在这里吧,窗体己经构造过了,这里是新生成了一个form2实例frm,与原来的窗体实例是两个不同的窗体,自然得不到结果。给分吧!感觉今天好牛,前面好多人没发现问题。pad打字太累了,我容易嘛!
      

  9.   

    有的,在main处有个new form
      

  10.   

    如果你的c++需要静态方法返回,就把返回字符部分封装成静态方法,而不要在这个静态方法中给窗体赋值。
    应该用实例方法调用静态方法返回值,并在此实例方法中给form中的控件赋值。
      private void button1_Click(object sender, EventArgs e)
            {
             string msg=   M2K_getUdpMessage();
             AddMsg(msg);
            }        public static string M2K_getUdpMessage()
            {
                string szShowData = "hello";
              
            }        public void AddMsg(string msg)
            {
                textBox1.Focus();
                textBox1.Text = msg;
                //Console.WriteLine("hello");
                this.Refresh();
            }
      

  11.   

    楼主的基础知识有点差,静态方法是唯一的,而实例方法是在某个具体的 new 出来的对象之下的,数量不唯一,可能是 0,1,N 个,当然无法确定了,只能传对象。