在开发一个自定义下拉控件时,由于需要的是一个可调整尺寸的弹出窗口,因此使用了动态生成窗口的方法,在控件的构造过程中生成了一个窗口。在显示下拉列表时显示该窗口,并使用BringToFront()方法将窗口显示在前方。控件功能正常。

使用了一段时间后,用户要求增加类似IE地址栏那样的自动完成功能。即在文本框中输入数据时,弹出窗口并在列表中自动定位匹配的条目,回车确认后自动选择该条目。在增加此功能的过程中,我遇到了一个问题,那就是由于下拉列表与输入数据的文本框不在同一个窗口,一旦输入数据并在列表中找到该记录,并将该记录设置为选中状态,文本框就会失去焦点,这显然是不行的,还要使用Focus()将文本框设置焦点。

问题这时出现了,一旦文本框得到焦点,下拉列表窗口显示到当前自定义下拉控件所在窗口的后面去了。为了解决这个问题,我使用了窗口的TopMost属性将窗口设置为顶层。

public  calss ComboEx
... {
     public ComboEx()
    ...{
           ......
           Form frmList=new Form();
           frmList.TopMost=true;
           ......
           
    }
    private void ShowList()
   ...{
           frmList.show();
           frmList.BringToFront(); 
   }
}

但是在运行时发现问题没有解决,下拉列表窗口还是会显示到后面去了。后来我无意中将“frmList.TopMost=true;”放在了Show()方法的后面,发现问题解决了。我随后又将语句放在Show()的前面,发现问题又出来了。

public  calss ComboEx
... {
     public ComboEx()
    ...{
           ......
           Form frmList=new Form();
           frmList.TopMost=true;
           ......
           
    }
    private void ShowList()
   ...{
           frmList.show();
           frmList.TopMost=true;
           frmList.BringToFront(); 
   }
}

我不知道为什么会这样,按理生成该窗口时设置了这个属性就应该起作用,象在工程开发时添加的窗口对象,一设置了这个属性后,显示时就看到效果了。而这次就不行了,难道是因为这个窗口是动态生成的原因,我对系统底层不是很了解,能力也有限,无法找到答案。只好记录下来,希望对大家有些帮助。

关于窗口中TopMost属性的一个问题相关推荐

  1. 自定义UserControl的属性为什么不能在设计时显示在属性窗口中

    自定义UserControl的属性为什么不能在设计时显示在属性窗口中 自定义UserControl的属性为什么不能在设计时显示在属性窗口中 http://www.cnblogs.com/dudu/ar ...

  2. 计算机 管理 mmc 注册表,在win7电脑的组策略编辑窗口中MMC无法创建管理单元怎么办?...

    电脑的本地组策略,大家如果经常有关注小编的文章的话,那么肯定对这个名字不会陌生,因为这个名字经常都会出现在小编的文章中,小编介绍的很多电脑操作技巧都需要以这个组策略为依托来进行操作.组策略和注册表一样 ...

  3. 如何在终端窗口中在Linux中创建文件?

    本文翻译自:How to create a file in Linux from terminal window? 在Linux终端中创建文件最简单的方法是什么? #1楼 参考:https://sta ...

  4. 让 Winform 窗口悬浮的简单方式,不可思议的 TopMost 属性

    很多次设置这个 TopMost 属性会莫名的不起作用,有时又可以.一直在想是为什么会这样? 后来多次尝试,发现这个属性必须在窗体某些其他属性后设置,比如在 Height.Width 这样的属性后. 看 ...

  5. 在计算机窗口中什么中的文件不能被删除,在Windows操作系统中,“回收站”可以恢复(1)上使用键删除的文件或文件夹。在“我的电脑”窗口中,...

    55题库为您解答: 正确答案:B 解析:本题考查Windows操作系统应用的基本知识.在Windows操作系统中,"回收站"可以恢复硬盘上使用Del>键删除的文件或文件夹.& ...

  6. 为什么任务栏包含在桌面窗口中?

    任务栏这个东西,在Windows的世界是一个非常特殊的存在,因为有了它,程序的工作区不再是整个屏幕(对于多显示器,也是同样的).今天的问题是:为什么操作系统不返回一个排除了任务栏区域的工作区坐标,而是 ...

  7. 【苹果相册】内容家庭推软件安装在“动静帐户”弹出窗口中

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件安装 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容安装 *** 点击即可查看作者要求内容信息 作者推荐内容 ...

  8. QWidget子窗口中setStyleSheet无效,解决方法

    QWidget子窗口中setStyleSheet无效,解决方法 参考文章: (1)QWidget子窗口中setStyleSheet无效,解决方法 (2)https://www.cnblogs.com/ ...

  9. 实验4:正确的为各种属性赋值||实验7:通过abstract属性创建一个模板bean||实验8:bean之间的依赖||实验9:测试bean的作用域,分别创建单实例和多实例的bean★(测试)

    实验4:正确的为各种属性赋值     测试使用null值 .     引用类型赋值(引用其他bean.引用内部bean)(测试)     集合类型赋值(List.Map.Properties).(测试 ...

最新文章

  1. 计算机艺术未来发展趋势,计算机技术对现代艺术设计的影响
  2. csgo怎么控制电脑玩家_图文详解电脑怎么发起远程控制
  3. 在Linux平台上如何使用接静态库和共享库
  4. 跨越企业的“中等收入陷阱”
  5. python表示复数的语句是_在python中复数如何表示
  6. 解决 Maven 报错 Non-resolvable parent POM ... was cached in the local repository, resolution will not be
  7. JMeter3.0_插件管理
  8. halcon旋转后坐标_FPGA大赛【八】具体模块设计图像旋转方案
  9. 你了解的继承方式html,法定继承、遗嘱继承、遗赠,这三种房产过户方式你了解多少?...
  10. 【转载】如何制作python安装模块(setup.py)
  11. nginx——ngx_http_gzip_module
  12. hibernate 联合主键
  13. java语言是那年_Java语言是在()年正式推出的_学小易找答案
  14. Git 常见问题总结
  15. hotnets 2019 Using ground relays for low-latency wide-area routing in megaconstellations 阅读报告
  16. 项目管理之敏捷开发之道
  17. 自定义拍照时 拍照界面_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...
  18. ubuntu18.04 安装软件中心(software-center)
  19. 今日头条App 页面秒开方案详解
  20. greenplum的用法

热门文章

  1. MySQL中PreparedStatement sql中in的引号问题
  2. wav文件提取音频数据_python
  3. 用Java实现平衡二叉树
  4. 怎么改变html无序列表的字号,html无序列表代码 html5 无序列表的行距怎么设置
  5. godaddy nginx_2020年7种最佳GoDaddy替代品(更便宜且更可靠)
  6. 齐次坐标表示向量与坐标理解
  7. D2 归来, 特此YC一篇
  8. mq服务器与客户端消息同步,RocketMQ:主从同步的实现
  9. 使用 strace、tcpdump、nlmon、wireshark 探索 ethtool netlink 框架的原理
  10. Vue+bpmn.js自定义流程图之palette(二)