RT,最近遇到一个问题:在一个WinForm中,有5个TrackBar控件,还有1个按钮。我需要点击那个按钮来判断用户到底操作的是哪个TrackBar。所以想到了利用焦点来处理。
可是在测试的时候,拖动其中某一个TrackBar后点击按钮,那么当前的焦点就到了按钮上,并不是在被操作的TrackBar上。
我试过this.ActiveControl和TrackBar.Focused这两种办法,但是不能解决我的问题。所以我问:
1.能不能得到前一个得到焦点的控件?
2.对于问题的解决,各位大拿们有什么办法么?谢谢!

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        TrackBar tb;
            private void Form1_Load(object sender, EventArgs e)
            {
                tb = null;
                this.trackBar1.LostFocus+=new EventHandler(trackBar_LostFocus);
                this.trackBar2.LostFocus += new EventHandler(trackBar_LostFocus);
                this.trackBar3.LostFocus += new EventHandler(trackBar_LostFocus);
                this.trackBar4.LostFocus += new EventHandler(trackBar_LostFocus);
                this.trackBar5.LostFocus += new EventHandler(trackBar_LostFocus);        }        void trackBar_LostFocus(object sender, EventArgs e)
            {
                tb = (TrackBar)sender;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                if (tb != null)
                {
                    MessageBox.Show(tb.Name);
                }
            }
        }
    }将所有TrackBar控件的LostFocus 事件都绑定到同一个方法上.
    tb里存的就是上一个失去焦点的TraceBar
      

  2.   

    谢谢xingyuebuyu!!测试有效!呵呵