winforms - 使表单转到随机位置并保持在屏幕尺寸内 - Windows 表单
问题描述
嗨,我正在制作一个潜意识消息程序,其中我有一个出现然后很快消失的表单。
我现在正试图弄清楚如何制作它,以便每次弹出时,它都在一个随机的位置,但最重要的是我正在努力使它保持在某人屏幕尺寸的范围内。
我一直在努力寻找相关的代码,也看到了一些关于使用 Width 设置控件的信息,但我也无法找出控件的含义。
希望指出正确的方向
谢谢。
解决方案
如果要以编程方式设置表单大小,请将表单的StartPosition
属性设置为Manual
.
您可以通过以下方式获取屏幕尺寸
Rectangle screen = Screen.PrimaryScreen.WorkingArea;
你还需要一个Random
对象。确保只创建一次,例如将其设为静态和只读。
private static readonly Random _random = new Random();
现在您可以获得随机位置并打开表格
var frm = new MySubliminalForm();
int x = _random.Next(screen.Width - frm.Width); // range [0 .. screen width - form width].
int y = _random.Next(screen.Height - frm.Height); // range [0 .. screen height - form height].
frm.Location = new Point(x, y);
frm.Show();
这显示屏幕(大矩形)和窗口(小矩形)处于最大位置。如您所见,窗口的 X 位置是屏幕宽度减去窗口宽度,Y 位置是屏幕高度减去窗口高度。
+------------------screen width------------+
| : |
| : |
| screen : |
| y = Hscr - Hwin |
| : |
| V |
| .....x = Wscr - Wwin ...> o-window width-+
| | |
| | window |
| | |
+---------------------------+--------------+
推荐阅读
- r - 为闪亮的 Web 应用程序运行 UI 时出错 - 'closure' 类型的对象不是子集
- java - 无法在 Spring Boot 多模块应用程序中的 JUnit 4 测试中自动装配服务
- python - 如何清理此数据类型对象并将其转换为浮点类型
- java - OpenGL / LWJGL如何在移动相机时将对象保持在屏幕中间
- c++ - 如何检测屏幕分辨率何时发生变化?
- python - 如何在 Flask 应用程序中对 HTML 表格进行排序?
- c# - Windows 窗体 - 此上下文中不存在名称“dataGridView2”
- python - Python计算值小于1的位数
- python - 传递列表项作为 withColumn (Pyspark) 的输入
- node.js - 如何在 nodejs 中为 JWT 使用 RSA_PRIVATE_KEY?