码迷,mamicode.com
首页 > Windows程序 > 详细

关于窗体跟随与 PointToScreen

时间:2014-09-22 00:19:21      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:io   os   ar   for   sp   问题   on   代码   c   

今日写一段测试代码,实现的功能是,当一个输入框获得焦点时,某个帮助窗体跟随在其下方显示。代码很简单,本来没有什么值得一提的。但实验的时候发现,有些控件能较好地跟随,但有些不能,而且距离十分远。

主要代码如下(跟随窗体中):

           Point p = ctrl.PointToScreen(ctrl.Location);
            p.X += 10;
            p.Y += ctrl.Height + 1;

            lblDebugPoint.Text = string.Format("X: {0}, \r\nY: {1}", p.X, p.Y);
            this.Location = p;
            txtSearch.Focus();
            Show();

问题出现在哪里呢?经过一翻思索,也翻阅了一些文章。发现原来问题出现在第1句。

ctrl.PointToScreen(ctrl.Location);

ctrl.Location是什么?它是此控件相对于其容器的位置,ctrl.PointToScreen又是基于本控件来计算的。标准不一致,这还不乱套吗?

修改起来也不难,只需要统一标准就行,有两种方式:

Point p = ctrl.Parent.PointToScreen(ctrl.Location);

Point p = ctrl.PointToScreen(ctrl.ClientRectangle.Location);

 

最简单的代码上出了问题。

关于窗体跟随与 PointToScreen

标签:io   os   ar   for   sp   问题   on   代码   c   

原文地址:http://www.cnblogs.com/qkhh/p/3985091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!