日期:2014-05-17  浏览次数:20873 次

委托只能指向事件吗?
需求很简单,运行窗口1,直接弹出窗口2,并改变窗口2的某个label的text
疑问有2, 请看代码注释。
直接上代码:

//窗口2声明委托
public delegate void Change(string str);
    public partial class Form2 : Form
    {
        //定义一个指向委托的事件,只能通过事件触发吗?
        public event Change change;
        public Form3()
        {
            InitializeComponent();
            //该处会报错 “並未將物件參考設定為物件的執行個體 ”
            change("123");
        }
    }


//窗口1执行窗口2的委托
public partial class Form3 : Form
    {
        public Form2()
        {
            InitializeComponent();

            Form3 f = new Form3();
            f.change += new Change(f_ChangeColor);
            f.Show();
        }

        void f_ChangeColor(string str)
        {
            this.Text = str;   //this 如何指向我需求的那个label
        }
    }


------解决方案--------------------
方法也是可以的呀
------解决方案--------------------
chang是个类型,你不能直接用这个类型
而要他的实例

------解决方案--------------------
返回类型,参数类型个数一样的方法 ,都可以委托。
delegate double MathAction(double num);