现在有这个情况,从一个窗体中new了一个操作类,这个操作类进行数据操作后,有一个方法是向窗体中的text控件写入一个值.
这种情况怎么实现啊?

解决方案 »

  1.   

    class 操作类{
        Form form;
        public 操作类(Form f){
            this.form=f;
        }
        public void Write(){
            (form as Form1).ShowText("123");
            //或者(form as Form1).TB.Text="123";
        }
    }
    --------
    Form1中
    给Form1添加一个方法~~
    public void ShowText(string str){
        this.TextBox1.Text=str;
    }
    或者一个属性
    public TextBox TB{
        get{
            return this.TextBox1;
        }
    }
    --------------------------
    操作类 c=new 操作类(this);
      

  2.   

    简单的委托和事件参考    public partial class Form1 : Form
        {
            class test
            {
                public delegate void writeText(string strText);            public event writeText onWrite;            public void DoWrite()
                {
                    if (this.onWrite != null)
                    {
                        this.onWrite("jinjazz");
                    }
                }
            }        public Form1()
            {
                InitializeComponent();
            }                private void button1_Click(object sender, EventArgs e)
            {
                test t = new test();
                t.onWrite += new test.writeText(t_onWrite);
                t.DoWrite();
            }        void t_onWrite(string strText)
            {
                this.textBox1.Text = strText;
            }
     
        }
      

  3.   

    委托和事件的好处在于解耦,比如上边的例子中DoWrite函数只把信息传递给回调函数,具体回调函数去给textbox还是用messagebox这个test是不去关心。test类可以让任何windows form引用,也可以让webform引用,可以让c#引用也可以让vb.net引用,比较自由。