现在我要双击其他label的时候,不管修改是否完成,这个textbox也变回label,怎么做?说不明白,还是来代码吧,但很多人不耐烦看代码
        Label hjlbl = new Label();private void label1_DoubleClick(object sender, EventArgs e)
        {
            TextBox hjtx = new TextBox();
            Label hjlbl = sender as Label;
            hjlbl.Visible = false;
            hjtx.Location = hjlbl.Location;
            hjtx.Size = hjlbl.Size;
            hjtx.Text = hjlbl.Text;
            hjtx.Visible = true;
            hjtx.KeyDown += new KeyEventHandler(hjtx_KeyDown);
            this.Controls.Add(hjtx);
        }        void hjtx_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                TextBox hjtx = sender as TextBox;
                hjtx.Visible = false;
                hjlbl.Text = hjtx.Text;
                hjlbl.Visible = true;
                this.Controls.Add(hjlbl);
            }
        }

解决方案 »

  1.   

    就是这一系列的label都调用label1_DoubleClick(),现在我修改完回车后确实能变回label,但如果我不回车直接双击其他的label那个却仍然是textbox,问怎么才能在我双击其他label的时候就相当于那个已经完成回车过了
      

  2.   

    你还是用textbox,样式上把边框去掉,看起来像label,然后设只读属性,双击后拿掉只读属性,多个的话,写一个方法,就是把所以文本框设为只读,当你双击一个的时候,先运行这个方法全部只读,然后再打开你要编辑的文本框,进行编辑,编辑完了,比如失去焦点什么的,再加回只读,这样,我做过的,好了,给分吧。嘿嘿
      

  3.   

    调用按钮的btmn.performclick
    使用textbox显示label
      

  4.   

    还是没有搞定
    void hjtx_KeyDown(object sender, KeyEventArgs e)
      {
      TextBox hjtx = sender as TextBox;
      hjlbl.Text = hjtx.Text;
      if (e.KeyCode == Keys.Enter)
      {
      hjtx.Visible = false;
      hjlbl.Visible = true;
      this.Controls.Add(hjlbl);
      }
      }我想了一下,觉得应该在键盘动作的时候就给hjlbl.Text赋值,那就应该是这样现在的关键问题是,我如何调用hjtx_KeyDown,在哪里调用?
      

  5.   

    接下来该做的应该是在点击其他地方的时候调用hjtx_KeyDown,或者说textbox失去焦点的时候调用,而且要程序指定键盘已经按下enter,怎么做?
      

  6.   

    用leave事件,当离开textbox时会促发
      

  7.   

    当点击一个label时,用一个变量object来记录当前的label这个控件,当点击enter时,清空object,或者当双击其他的label时判断object是否为空,不为空,就清空。这样就可以保证只有一个textbox了。
      

  8.   

    还是没搞定
    问题改一下,要求只要鼠标在别的地方按下就改为label,谁能告诉我怎么做吧,具体一点好吧。这两天我都在搞那个什么LEVER,楞没搞出正确的效果
      

  9.   

    你的那个lable是否可以用textbox代替啊 如果可以的话只要设置textbox的属性就可以按下的时候把textbox的属性设置为只读的不过我还是不明白你讲的是什么意思
      

  10.   


    private void textBox1_Leave(object sender, EventArgs e)
            {
                textBox1.Visible = false;
            }窗体其他部分的Click事件写上XXX.Focus()