Winforms MDI“桌面”区域边界

2024-01-10

默认的MDI父控件有一个很大的“桌面”区域,可以显示多个子窗体。用户可以将表单拖动到此桌面区域的边缘,以便大部分子表单脱离屏幕。 (然后 MDI 父级中会出现一个滚动条)我不喜欢这个功能。有没有办法锁定桌面区域的边缘,以便子窗体保持完全可见?


我用来实现上面选择的答案的代码:

Public alreadyMoved As Boolean = False
Public Const HEIGHT_OF_MENU_STATUS_BARS As Integer = 50
Public Const WIDTH_OF_MENU_STATUS_BARS As Integer = 141
Private Sub Form_Move(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Move
    If Not alreadyMoved Then
        alreadyMoved = True

        'If I'm over the right boundry, drop back to right against that edge
        If Me.Location.X + Me.Width > _
            MdiParent.ClientRectangle.Width - WIDTH_OF_MENU_STATUS_BARS Then
            MyBase.Location = New System.Drawing.Point( _
                (MdiParent.ClientRectangle.Width - Me.Width - _
                WIDTH_OF_MENU_STATUS_BARS), MyBase.Location.Y)
        End If

        'If I'm over the bottom boundry, drop back to right against that edge
        If Me.Location.Y + Me.Height > _
            MdiParent.ClientRectangle.Height - HEIGHT_OF_MENU_STATUS_BARS Then
            MyBase.Location = New System.Drawing.Point( _
                MyBase.Location.X, (MdiParent.ClientRectangle.Height - _
                Me.Height - HEIGHT_OF_MENU_STATUS_BARS))
        End If

        'If I'm over the top boundry, drop back to the edge
        If Me.Location.Y < 0 Then
            MyBase.Location = New System.Drawing.Point(MyBase.Location.X, 0)
        End If

        'If I'm over the left boundry, drop back to the edge
        If Me.Location.X < 0 Then
            MyBase.Location = New System.Drawing.Point(0, MyBase.Location.Y)
        End If
    End If
    alreadyMoved = False
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winforms MDI“桌面”区域边界 的相关文章

随机推荐

  • 如何使用 openpyxl 写入 xlsm

    我正在写这段代码 我的目标是在此 Excel 文件的特定单元格中设置一个值 代码运行正常 退出时没有错误 但单元格 A1 仍为空白 我怎样才能解决这个问题 import openpyxl wb load workbook Test xlsm
  • 无法通过 RVM 安装 Ruby 2.0.0

    我继承了一个遗留代码库 需要使用 RVM 安装 Ruby 2 0 0 我使用的是 Mac OS X Catalina Ruby 2 0 0 的安装程序根本不起作用 以下是我的安装尝试 从 RVM 本身的安装一直到尝试安装 Ruby 2 0
  • 如何使用 Aurelia 通过单击内部锚链接保持在同一页面上?

    我正在为一个项目制定样式指南 目前我希望在锚链接上有一个基本的点击行为 以便它们滚动到相应的 ID 举个例子 a href section a 向下滚动到 div div 在 Aurelia 中 默认行为是将链接视为路由 我无法使内部链接正
  • 以编程方式调用 DockPanel-Suite 的“AutoHidden”DockContent

    我无法以编程方式显示 自动隐藏 底座 虽然在网上找不到任何答案 但如下那么问题 https stackoverflow com questions 12956147 dockpanel suite dockcontent visibilit
  • Swift 项目中链接的框架和库

    我的 iOS 应用程序播放声音AVPlayer 为此 我必须在类的顶部输入以下内容 import AVFoundation 我有 Objective C 背景 所以我去了 Xcode 项目General选项卡并添加AVFoundation单
  • 触摸移动被卡住 忽略取消触摸移动的尝试

    我正在处理触摸滑块上的触摸事件 并且不断收到以下错误 忽略使用 cancelable false 取消 touchmove 事件的尝试 例如 因为滚动正在进行中并且无法滚动 打断了 我不确定是什么导致了这个问题 我是触摸事件的新手 似乎无法
  • 如何让一个简单的Hello World在Windows中“隐形”(C/C++)

    你好 我想知道是否可以在 Windows 中使一个简单的 Hello World 程序 然后前进到实际的程序 不可见 我的意思是 当我执行该程序时 不会有任何图形指示 没有cmd打印 Hello world 没有任务栏标签 没有系统托盘图标
  • android中如何禁止点击ListView?

    我有一个 ListView 我正在用数据库中的值填充它 如果数据库为空 我将 ListView 的第一项设置为 无数据 我想禁止点击该项目 我用过ArrayAdapter 我尝试将 areAllItemsEnabled isEnabled
  • 如何在 Kusto 中创建任意大小的窗口?

    Using prev https learn microsoft com en us azure data explorer kusto query prevfunction函数我可以单独访问前几行 mytable sort by Time
  • 如何获取用户玩我的游戏的时间? Steamworks API

    如何获取用户玩我的游戏的时间 在 Unity 中使用 Steamworks API 和 C 我已经浏览了文档 但没有找到类似的内容 并认为我遗漏了一些东西 我应该使用一个简单的脚本来记录自己游戏中的比赛时间 但为时已晚 如果有人能给我一个打
  • 当Java TimerTask在Timer中被调度时,它是否已经“执行”了?

    我想澄清一些关于 TimerTask 的事情 当你有下面的代码时 timer schedule task 60000 如果任务计划在接下来的 1 分钟内运行 则任务对象是否已经在执行 因为在我的代码中的某个地方我调用了 task cance
  • 使用 HTML5 数据属性的 AJAX 响应

    我有一个工作环境 我使用 AJAX 响应来填充 HTML 元素 例如 AJAX 响应有两个 或 n 个 对象 如下所示 0 Object id 111 Name abc 1 Object id 112 Name xyz 然后 已经有两个 或
  • 错误消息无法打开包含文件:'gxall.h':没有这样的文件或目录

    我正在尝试构建一些旧的 Visual C 代码 当我这样做时 我收到此错误消息 fatal error C1083 Cannot open include file gxall h No such file or directory 我该如
  • AWS Lambda 任务在 6.00 秒后超时

    我正在使用无服务器框架 我的 Lambda 函数连接到 DynamoDB 表以更新表中的项目 表的读写容量单位为 5 并且 auto scaling 被禁用 AWS Lambda 函数分配了 128MB 内存 我使用 Jmeter 进行性能
  • C++ 中的对话框未接收到某些击键

    当我 最终 学习用 C 编写 Windows 应用程序时 我偶然发现了这一点 我有一个用它创建的对话框CreateDialog 我还有一个默认按钮 然而 每次我按下TAB or ENTER 什么也没有发生 控制焦点也没有改变 默认按钮也没有
  • 使用 TPL 时避免窗口 (WPF) 冻结

    我正在构建一个 WPF 它有一个在 sql server 中执行 sql 查询的按钮 该查询可能需要很长时间才能运行 我想使用 TPL 来做到这一点 这段代码 var result Task Factory StartNew gt comm
  • 使用 PDO 有效获取带有 WHERE 子句的 SELECT 查询返回的行数

    有关于SO的大量讨论 https stackoverflow com search q pdo 20select 20number 20of 20rows 20 5Bmysql 5D关于如何获取运行时返回的行数SELECT使用 PDO 进行
  • 在应用程序中,活动和服务是否会在同一进程中运行?

    面试问题 在一个应用程序中 Activity和Service是运行在同一个进程中还是不同的进程中 我的答案是 在同一过程中 下一个问题 如果是的话 Activity和Service是如何同时运行的 我的答案是 操作系统将负责执行 坦白说 我
  • 将 bigdecimal 转换为 double(不带指数格式)

    我正在对高十进制精度 BigDecimal 对象进行计算 我正在使用需要双精度参数的第三方库 当我尝试将其转换为 double 时 我得到指数格式的值而不是小数 BigDecimal 0 000035000000000 Double 3 5
  • Winforms MDI“桌面”区域边界

    默认的MDI父控件有一个很大的 桌面 区域 可以显示多个子窗体 用户可以将表单拖动到此桌面区域的边缘 以便大部分子表单脱离屏幕 然后 MDI 父级中会出现一个滚动条 我不喜欢这个功能 有没有办法锁定桌面区域的边缘 以便子窗体保持完全可见 我