zoukankan      html  css  js  c++  java
  • 关于窗体跟随与 PointToScreen

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

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

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

                lblDebugPoint.Text = string.Format("X: {0}, Y: {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);

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

  • 相关阅读:
    java继承
    Linux下word转pdf以及unoconv中文乱码问题
    jquery点击事件捕获
    在Windows上玩TensorFlow(一)——安装Docker【转】
    php面试总结
    [转载] PHP 线程,进程和并发
    微信小程序数据解密
    sql基础整理
    PHP 底层的运行机制与原理【转载】
    react-native 运行原理【转载】
  • 原文地址:https://www.cnblogs.com/qkhh/p/3985091.html
Copyright © 2011-2022 走看看