在事件中改变
        private void Form1_TextChanged(object sender, EventArgs e)
        {
            string nnn = Form1.ActiveForm.Text.ToString();
            this.Textbox.Text = nnn;
        }
然后想在这个函数取得
        public void Bind(string strsql)
        {
            string nnn = this.Textbox.Text.ToString();
        }
结果在这边的时候,Textbox还是空值
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Bind(strsql);
        }
怎么才能得到改变后的值呀?或者怎么改变这函数执行顺序?把changed放在lord里也不行。

解决方案 »

  1.   

    Form1_Load时,text的内容应该没有呢,你在Form1_TextChanged中调用Bind你现在TextChanged事件中有 this.Textbox.Text = nnn;,这可能引起死循环
      

  2.   

    private void Form1_TextChanged(object sender, EventArgs e)
    {
        string nnn = Form1.ActiveForm.Text.ToString();
        this.Textbox.Text = nnn;
    }你确定要用 Form1.ActiveForm.Text 属性吗,既然是 TextChanged 事件,取 this.Text 也可以啊
    你试下不注册 TextChanged 事件,override OnTextChanged 方法,把 Form1_TextChanged 改成如下方法
    protected override void OnTextChanged(EventArgs e)
    {
        base.OnTextChanged(e);
        string nnn = this.Text.ToString();
        this.Textbox.Text = nnn;
    }
      

  3.   

    Form1.ActiveForm.Text一定要用,Textbox还是取不出来,这个Textbox是toolstripTextbox,在changed事件里调用bind也不行啊……
      

  4.   

    你的这个TextChanged事件,不应该是Form的,应该是TextBox的吧,我也是初学者,希望对你有帮助哈
      

  5.   

    把nnn设成public static string nnn = Form1.ActiveForm.Text.ToString()
    text还是没变。Textbox的值我是用登录窗口给它的,登陆成功后跳出的新窗口名字和Textbox.text都改变了,但是获取改变后的值一直不是我想要的值。