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“桌面”区域边界 的相关文章

  • 有没有更简单的方法来处理复选框?

    在 vb net 中 我有一个包含一组四个复选框的表单 每个复选框都表示 选中时 用户想要向其订单添加特殊指令 代码如下所示 If SpecialInstruction1CheckBox Checked Then AddSpecialIns
  • 为标签生成成员:我有什么理由应该这样做?

    我在这里读过另一篇文章 因此 如果可能的话 您不应该为标签生成成员 我想知道有什么潜力缺点到这会是 我说的好处是性能提高 对吗 还要别的吗 我有一个带有 100 个标签的 winform 应用程序 不产生成员有什么好处 还是只有在 Web
  • WinForms:如何确定窗口是否不再活动(没有子窗口具有焦点)?

    我的应用程序使用多个窗口 我想隐藏一个特定窗口 以防应用程序失去焦点 当活动窗口不是应用程序窗口时 source https stackoverflow com questions 466354 how can i tell if a wi
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • vb6 中双精度计算的值不正确

    当在 vb6 中添加 2 个值时 我得到一些奇怪的行为 当在立即窗口中针对不同情况打印变量 sum 双精度型 时 如下所示 我得到的结果为 sum 0 sum 0 sum 0 sum 74 46 0 41 sum 74 87 sum 97
  • 如何将 .NET 控制台应用程序转换为 Winforms 或 WPF 应用程序

    我经常从一个简单的控制台应用程序开始尝试一个想法 然后创建一个新的基于 GUI 的项目并将代码复制进去 有更好的方法吗 我可以轻松转换现有的控制台应用程序吗 只需添加一个新的Winform 将以下代码添加到您的Main Applicatio
  • 如何使对象在以表单呈现时“可缩放”

    我正在 Winform 中渲染我的游戏 方式与本示例中的方式相同 WinForms系列1 图形设备 http xbox create msdn com en US education catalog sample winforms seri
  • vb.net - 多维数组列表

    我已经设法制作了一些单维数组列表 但我无法找出多维数组列表 这就是我想做的 我有一个包含 5 列的数据库 mdb 我希望每一行都位于数组列表中 在 PHP 中我通常会做的是 array field1 array field2 field3
  • WinForm - TabStop 不工作

    我有一个带有 3 个组框的 WinForm 其中一个带有组合框 两个带有单选按钮 我将它们及其子控件全部设置为 TabStop false 但是当我使用 TAB 循环时 最后两个组框中当前选定的单选按钮将获得焦点 如果没有办法改变这种行为
  • ListView onScroll 事件

    我正在编写一个简单的 C 应用程序 我需要 Listview 上的 onScroll 事件 所以我创建了ListviewEx类继承原来的ListView 我找到了如何从 WinAPI 检测滚动消息 并修改了 WndProc 方法 现在我有这
  • 从所有动态生成的控件中获取文本总和

    我有一个 Windows 窗体 其中有下面列出的控件面板1 按钮1 添加新手机 按钮2 确定单击button1 时会添加一个用户控件 您可以根据需要添加任意数量的用户控件 userControl 定义由五个控件组成 组合框1 组合框2 文本
  • 使用 JSON 序列化 PictureBox

    我正在开发一个 C Windows 窗体应用程序项目 我需要使用 JSON 序列化 PictureBox 并将其保存到文件中 由于某种原因 JSON 在尝试序列化 PictureBox 时出现错误 Newtonsoft Json JsonS
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • GetCharIndexFromPosition() 获取最后一个字符

    我想获取光标下的子字符串富文本框 http msdn microsoft com en us library system windows controls richtextbox 28v vs 110 29 aspx private vo
  • String.Format - 它如何工作以及如何实现自定义格式字符串

    With String Format 例如可以格式化DateTime对象以许多不同的方式 每次我寻找所需的格式时 我都需要在互联网上搜索 我几乎总能找到一个可以使用的例子 例如 String Format 0 MM dd yyyy Date
  • 从 VB.NET 应用程序填写 PDF 表单

    我的任务是在 VB Net 中创建一个 Windows 应用程序 要求之一是从 MSSQL 数据库读取数据 并将某些值放入 PDF 表单中 如何使用 VB Net 将数据放入预先存在的 PDF 文件中 另外 是否可以将PDF文件作为资源放入

随机推荐

  • 如何使用 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 父级中会出现一个滚动条 我不喜欢这个功能 有没有办法锁定桌面区域的边缘 以便子窗体保持完全可见 我