问题:
    我做个一个横线的自定义控件Hline(我直接就拿自定义控件的界面做线来使用,只需要在窗体上定义宽度就行),我在Hline中重写了鼠标点击,拖动,释放几个控件,我在窗体上引用的时候,将Hline的高度定义为1,这样就是一跟很细的线。
   但是在选取这条线的时候,不好选中,请问有什么好办法选中线吗?效果就是鼠标点在离线很近的地方就算选中!
补充:不要说把线的宽度调大,那种效果不好看的!请各位高手帮忙

解决方案 »

  1.   

    补充:不要说把线的宽度调大,那种效果不好看的!请各位高手帮忙其实在设计时把它弄得宽点.在运行时比如form的load事件里再把它设成窄的不也一样吗?
      

  2.   

     protected override void WndProc(ref System.Windows.Forms.Message m) {
                if (m.Msg == 0x00A1) {
                    // 鼠标点击                if (IsNearMe(MousePosition)) {
                        Select();
                    }                m.WParam = System.IntPtr.Zero;
                }
                base.WndProc(ref m);
            }        private bool IsNearMe(Point position) {
                // 这里写你的判断逻辑
                return true;
            }
      

  3.   

    当然了,父窗体需要主动SendMessage到你的控件
            [DllImport("user32.dll")]
            private static extern int SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);
      

  4.   

    VS提供的控件也存在这个问题。
    我平时选中难选的控件都是用鼠标右键的快捷菜单。
    GroupBox左上角有个柄,可以通过它来选中,GroupBox就是一种闭合的线吧。
      

  5.   

    觉得楼上几位说的都不错了
    要不看看splitter是怎么写的吧- -很细的时候也能选中的
      

  6.   

    1 在属性窗口中选择线
    2 参考网页设计中,表的边框的做法,board=0,还可以看见很方便就选到了,在设计的时候画宽,在实际中画成原样
      

  7.   

    给Hline设置一个特别点的鼠标指针,这样用户先移动,当鼠标指针变化的时候再点击可能会好些。
      

  8.   

    实在没有好办法,有个笨办法,ctrl+A全选,然后别放crtl,点击去掉别的选择,呵呵。