我在MainForm中添加了一个tabControl,然后在其中一个选项卡中添加了许多textbox,combobox控件,我想要问各位大侠的是,怎样实现“当我点击其中一个控件时,其颜色变为我指定的颜色,比如红色。当点击另一个控件时,该颜色转移到此。”

解决方案 »

  1.   

    private void textBox41_Click(object sender, EventArgs e)
            {
                textBox41.BackColor = Color.LightBlue;
            }
    我只知道用这个可以改变其背景色,但是当我将焦点转移到其他控件的时候怎么将这个颜色也转移呢?
      

  2.   

    像你那样,把所有的控件都写到一个事件下 
    然后用 :      ((Control)sender).BackColor = Color.Red;
    不过还不能移动,再想想
      

  3.   

    定义全局变量  object obj;
    窗体载入时   obj = this;
    在集体的事件里                ((Control)obj).BackColor = Color.Empty;
                                  ((Control)sender).BackColor = Color.Red;
                                  obj = sender;
      

  4.   

    object obj;        private void btn_MouseDown(object sender, MouseEventArgs e)
            {
                ((Control)obj).BackColor = Color.Empty;
                ((Control)sender).BackColor = Color.Red;
                obj = sender;
            }        private void Form1_Load(object sender, EventArgs e)
            {
                obj = this;
            }
      

  5.   

    我不太清楚yuzhlhua()说的btn_MouseDown是什么?可能我没说清楚,举个很简单的例子吧:  在我窗体上有50个TextBox控件,当我将焦点到其中一个要输入内容之前,颜色变成想要的;当输入完成,焦点转移到另外一个TextBox框,另外一个文本框的颜色变成和之前那个一样,而之前的文本框的背景色消失。
      

  6.   

    btn_MouseDown  是你自己定义的 一个事件,相当于  textBox41_Click;(不是所有的控件都有Click 事件,所以选择了MouseDown ) 
    你把所有的 TextBox控件 的MouseDown   事件都选择 一个事件里,如 textBox41_Click (选择所有的的TextBox控件  在事件栏里找MouseDown   事件 ,不用一个一个添加)
    再把代码写进去就好了
      

  7.   

    在所有 TextBox 的 OnGetFocus、OnLostFocus事件中设置背景。当然这个注册事件处理程序的工作应该由程序来做,而不是手工设置。
      

  8.   

    楼上的大哥,小弟愚钝,用的2005,没找到OnGetFocus、OnLostFocus事件,麻烦你说的具体点!
      

  9.   

    谢谢啦,yuzhlhua()!
     但是不理解,呵呵。菜鸟啊!
       能解释一下代码吗?
      

  10.   

    object obj;//定义对象        private void btn_MouseDown(object sender, MouseEventArgs e)
            {
                ((Control)obj).BackColor = Color.Empty;   //清空上个控件的背景
                ((Control)sender).BackColor = Color.Red;  // 对现在的控件付值
                obj = sender;                             //取得上一控件的对象
            }        private void Form1_Load(object sender, EventArgs e)
            {
                obj = this;  //给对象付初值
            }
      

  11.   

    private void myForm_Load(object sender, EventArgs e)
            {
                for(int n=1;n<=10;n++){
                    TextBox t=new TextBox();
                    this.Controls.Add(t);
                    t.Dock = DockStyle.Top;
                    t.GotFocus+=new EventHandler(t_GotFocus);
                    t.LostFocus+=new EventHandler(t_LostFocus);
                }
            }        void t_LostFocus(object sender, EventArgs e)
            {
                ((TextBox)sender).BackColor = Color.White;
            }        void t_GotFocus(object sender, EventArgs e)
            {
                ((TextBox)sender).BackColor = Color.Red ;
            }
      

  12.   

    我前边随手多写了一个“On”。几乎所有写On打头的都不是事件,而是触发事件的方法,因为比较好找出这个错误,所以前边我没有修改。
      

  13.   

    其实把代码中的 TextBox 换成 Control 才更好,这是细节。
      

  14.   

    根本没有LostFocus和GotFocus两个事件啊?!