我的窗口中有个大的splitContainer1充满整个窗口,splitContainer1中有2个splitContainer,分别是splitContainer2和splitContainer3.在splitContainer2和splitContainer3中各有个TREEVIEW和LISTVIEW,我要在LISTVIEW中进行鼠标右击事件进行刷新等操作,这就需要判断鼠标右击时鼠标在哪个控件内,C#如何获取鼠标点击处的控件名称?
我用Point pt = Cursor.Position;
            pt = this.PointToClient(pt);
            Control ctrl = this.GetChildAtPoint(pt) as Control;
            if (ctrl != null)
                MessageBox.Show(ctrl.Name);
弹出的都是splitContainer1。我应该怎么做,请说详细点,谢谢了啊

解决方案 »

  1.   

    譬如有两个button button1 和button2
    button1得click事件是 button_click(object sender, EventArgs e)
    button2得click事件也是 button_click(object sender, EventArgs e)protect void button_click(object sender, EventArgs e)
    {
       Button btn = (Button)sender;
       MessageBox.Show(btn.Name); 
    }这样就可以得到到底是点击了 button1 还是 button2
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication11
    {
        public partial class Form1 : Form, IMessageFilter
        {
            public Form1()
            {
                InitializeComponent();            Application.AddMessageFilter(this);
            }        bool IMessageFilter.PreFilterMessage(ref Message m)
            {
                if (m.Msg == 0x201)
                {
                    Control C = GetControl(this);
                    if (C != null)
                        MessageBox.Show(C.Name);
                    return true;
                }
                return false;
            }        Control GetControl(Control C)
            {
                Control Temp = C.GetChildAtPoint(C.PointToClient(Cursor.Position));
                if (Temp == null)
                    return C;
                else
                    return GetControl(Temp);
            }
        }
    }