填充/大小/边距,当使用 ToolstripControlHost 作为弹出控件时

2024-01-21

我正在使用 VB2008 Express。我一直在研究一个“弹出窗口”来选择日期范围。 DateTimePicker 并不理想,因为其目的是选择一个日期范围,该范围始终是一整周,从星期日到星期六。控制效果很好,我对此感到非常自豪。我的问题与使用 ToolstripControlHost 时添加的边框有关。我已经包含了屏幕截图和我的代码。

在下面的代码中,假设存在一个名为“btnTimePeriod”的按钮,我希望在其下方显示一个面板,其中包含一些自定义项目,并且面板的名称为“pnlDateRangePicker”。

它可以工作......但看起来不太正确。面板本身为 147 x 326 像素,但请注意附图中它在面板周围添加了我不想要的边框。顶部、底部和左侧都有边框……但由于某种原因,右侧的边框特别大。虽然我的代码没有明确设置它,但 AutoSize = true 所以我预计它会在面板周围缩小。

根据需要,我的代码已经将 ShowCheckMargin 和 ShowImageMargin 设置为 false。我没有包含 DrawDateCalander Sub 的代码,因为它不相关。我相信即使是空白面板也会产生相同的结果。我不知道这个利润是从哪里来的。有什么指导吗?

Private Sub btnTimePeriod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTimePeriod.Click
    Call DrawDateCalendar(DatePart(DateInterval.Month, FirstDisplayedSunday), DatePart(DateInterval.Year, FirstDisplayedSunday))
    Call ShowControlBelow(btnTimePeriod, pnlDateRangePicker)
End Sub

Sub ShowControlBelow(ByVal Showbutton As Control, ByVal ShownControl As Control)

    Dim PopupContainer As New ToolStripControlHost(ShownControl)
    PopupContainer.Margin = New Padding(0)
    Dim mnuDropDown As New ContextMenuStrip
    mnuDropDown.Padding = New Padding(0)
    mnuDropDown.ShowCheckMargin = False
    mnuDropDown.ShowImageMargin = False
    mnuDropDown.Items.Add(PopupContainer)
    ShowMenuBelow(Showbutton, mnuDropDown)

End Sub

Sub ShowMenuBelow(ByVal Showbutton As Control, ByVal WhichMenu As ContextMenuStrip, Optional ByVal AlignRight As Boolean = False)
    Dim x As Integer = 0
    Dim y As Integer = 0
    Dim itscontainer As Control = Showbutton.Parent
    x = Showbutton.Location.X
    y = Showbutton.Location.Y
    If Not itscontainer Is Nothing Then
        Do Until TypeOf itscontainer Is Form
            x = x + itscontainer.Location.X
            y = y + itscontainer.Location.Y
            itscontainer = itscontainer.Parent
            If itscontainer Is Nothing Then Exit Do
        Loop
    End If
    y = y + Showbutton.Height
    If AlignRight = True Then
        x = x - WhichMenu.Width + Showbutton.Width
    End If
    Dim xy As New Point(x, y)
    WhichMenu.Show(Showbutton.FindForm, xy)


End Sub

我从来没有用过ContextMenuStrip为此,也许这就是问题所在。

您可以尝试使用ToolStripDropDown反而:

Private Sub ShowControl(ByVal fromControl As Control, ByVal whichControl As Control)
  '\\ whichControl needs MinimumSize set:
  whichControl.MinimumSize = whichControl.Size

  Dim toolDrop As New ToolStripDropDown()
  Dim toolHost As New ToolStripControlHost(whichControl)
  toolHost.Margin = New Padding(0)
  toolDrop.Padding = New Padding(0)
  toolDrop.Items.Add(toolHost)
  toolDrop.Show(Me, New Point(fromControl.Left, fromControl.Bottom))
End Sub

Private Sub btnTimePeriod_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnTimePeriod.Click
  Call DrawDateCalendar(DatePart(DateInterval.Month, FirstDisplayedSunday), DatePart(DateInterval.Year, FirstDisplayedSunday))
  '\\Call ShowControlBelow(btnTimePeriod, pnlDateRangePicker)
  Call ShowControl(btnTimePeriod, pnlDateRangePicker)
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

填充/大小/边距,当使用 ToolstripControlHost 作为弹出控件时 的相关文章

  • 根据所选单选按钮启用文本框

    我有一个单选按钮列表 其中列出了不同的业务类别 最后一个选项是Other类别 当用户选择Other类别 我希望能够启用一个文本框 用户可以输入更多信息来解释Other选择 目前 我正在尝试 If rblCategory SelectedIn
  • LinqToSql 声明和实例化 DataContext 最佳实践?

    设置 DataContext 以便在扩展 LinqToSql 类中轻松访问方面的最佳实践是什么 例如 我的 dbml 中有一个 User 实体 我想向该类添加方法 如下所示 Partial Public Class User Public
  • 无法在 VB MVC 应用程序中创建 HtmlHelper 方法

    我无法弄清楚以下代码中缺少什么 我有一个应该添加 虚拟 辅助扩展的方法 Imports System Runtime CompilerServices Namespace HtmlHelpers Public Module HelpExte
  • 在 Visual Basic 中将窗体放置在屏幕右下角

    当表单加载时 如何将表单定位在屏幕的右下角 我正在使用 Visual Basic 2010 Express Thanks 编辑 我这样做了 看起来效果很好 Dim x As Integer Dim y As Integer x Screen
  • WPF DataGrid 验证/绑定模式错误

    我创建了一个非常简单的新项目 仅测试 Microsoft WPF DataGrid 行为 不涉及其他 我只使用标准的 DataGrid
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将签名位图转换为签名字符串(很奇怪的一个)

    基本上我需要将位图图像转换为字符串 但这不是常见的 困境在于该字符串由两部分组成 1 积分 2 线路 我需要将图像转换为由 分隔的两个部分 我得到的一个例子是 221A 221A270A270A25032503200720071716171
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 使用 JSON.net 反序列化

    我对 json JSON net 等都很陌生 在这里阅读类似的问题后 我无法让我的代码工作 我的错误到底是什么 我监督了什么 出于测试目的是否可以跳过 链接 和 元 类 或者我是否必须定义每个属性 我得到以下 REST 输出 codes h
  • VB.NET 中的类型比较

    如何比较 VB NET 中的类型数据类型 我的代码 Private Function Equal ByVal parameter As String ByVal paramenterName As String ByVal dataType
  • ODP.Net - OracleDataReader.读取速度非常慢

    我在 ODP Net 中的 OracleDataReader 方面遇到很多麻烦 基本上 我有一个参数化查询 需要 1 5 秒的时间来运行 返回大约 450 条记录 然后需要 60 90 秒的时间来循环 甚至没有代码在循环中运行 实际上是迭代
  • 您可以将委托函数作为可选参数传递吗?

    我知道在 Visual Basic 中 委托函数不能contain可选参数 但是方法可以将委托作为可选参数吗 我想做的是这样的 Delegate Sub MyDelegate ByVal input As String Sub MyDele
  • ArrayList 搜索 .net

    以下是存储在我的数组列表中的数据的格式 A Amsterdam B Brussels C Canada 如此等等 我想通过仅传递前几个字符直到 来搜索我的数组列表 因此 如果我有类似 AA Test 的东西 那么我只想通过 AA 来检查它是
  • 如何使用网络浏览器控件填写 html 表单

    在VB6 classic中 我们可以这样做 Private Sub Form Load WebBrowser1 Navigate2 http yourSite com End Sub Private Sub Command1 Click W
  • System.Linq.Dynamic 不支持 OrderByDescending("someColumn")?

    好的 在我们的项目中 我使用 System Linq Dynamic 库 但我刚刚注意到我无法执行以下操作 myDataSource OrderByDescending someColumnName 因为我收到以下错误 重载解析失败 因为无
  • 如何使用 VB.NET 或 C#.NET 代码从 yahoo 邮件 ID 发送邮件

    我想从我的 yahoomail Id 发送邮件 如何使用 VB NET 或 C NET 代码从 yahoo mail Id 发送邮件 需要善意的帮助 提前谢谢 西瓦库马尔 以下是一些制作基本 html 电子邮件消息的示例 http help
  • .net 应用程序中的内存泄漏

    我正在 VB net 2005 中开发一个桌面应用程序 该应用程序包含一个间隔为 1 分钟的计时器 每次计时器计时 就会执行一组函数 大部分与数据库相关 最初 应用程序运行良好 在进程 任务管理器 中 每次调用计时器时 CPU 使用率都会达
  • 您是否必须在 VB.NET 中显式创建表单实例? [复制]

    这个问题在这里已经有答案了 如果一个项目包含Form类 形式可以通过以下方式显示 Form1 Show 或者是否需要首先创建表单的实例 Dim frm As New Form1 frm Show 正如所建议的 使用表单名称使用默认实例 而第
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub

随机推荐

  • 同一个套接字上可以进行多少个异步套接字请求?

    当我在套接字上调用 BeginSend 时 我传递一个委托 该委托将在数据发送后 由不同的线程 调用 如果我在第一次尚未 回调 时再次调用 BeginSend 会发生什么 发送数据的正确行为是什么 执行 BeginSend 然后在回调中执行
  • linux 上的 Dart 抛出错误:GLIBC_2.14 GLIBC_2.15 not found

    我在 Google Compute Engine 上运行 Debian 7 2 尽管我怀疑 Centos Red Hat 和 Amazon Linux AMI 都有同样的问题 从 下载 64 位 Linux 版本的 Dart SDK 后这一
  • Gunicorn 工作线程和线程

    就 Gunicorn 而言 我知道有各种工作线程类 但对于本次对话 我只关注同步和异步类型 据我了解 sync workers 2 cpu 1 worker class sync async gevent workers 1 worker
  • 当我期望它输出 1,2,3 时,为什么此代码输出“49,50,51”

    package com company import java util Scanner public class Main public static void main String args System out println pl
  • 在 Docker Alpine 上安装 numpy

    我正在尝试在基于 Alpine 3 1 的 docker 容器中安装 numpy 我正在使用以下 Dockerfile FROM alpine 3 1 RUN apk add update make cmake gcc g gfortran
  • 如何使用 alembic --autogenerate 忽略某些模式

    我有一个图书馆 它是一个更大项目的一部分 该库在与较大项目共享的 PostgreSQL 数据库中使用自己的模式 我想用alembic revision autogenerate仅生成库架构的迁移并忽略对主 默认架构中表的更改 有什么选择可以
  • Zebra LP2844 停止响应 ZPL 命令或文件

    我向打印机发送了几个 zpl 文件来测试它 它工作得很好 之后 我从 UPS 接收 Base64 编码的 zpl 数据 创建一个文件并通过 Java 小程序将其发送到打印机 现在我发送给它的任何 zpl 命令或文件都不起作用 我将其置于诊断
  • MVC Core 如何强制/设置所有操作的全局授权?

    如何强制 设置 MVC Core 中所有操作的全局授权 我知道如何注册全局过滤器 例如我有 Setup cs services AddMvc options gt options Filters Add new RequireHttpsAt
  • 学说无关系连接[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以在不使用关系的情况下连接 ORM 中的表 https stackoverflow com questions 2203027 is this possible to join tables i
  • Golang gin gonic Web框架代理路由到另一个后端

    如何将一些路由的代理 Web 请求反向到另一个后端杜松子酒 https gin gonic github io gin Golang 网络框架 有没有办法直接在Handle函数中转发如下图 router gin New router Han
  • maven中package和groupId有什么区别

    我了解这些条款 groupId artifactId and version 在阅读有关package 我可以看到它是您的根包的名称 默认值是groupId你之前进入过 在这种情况下 有什么区别package and groupId 我想它
  • Magento 1.9 - OroCRM 更新同步无法正常工作

    从 magento 1 9 更改客户详细信息后 更改未反映在 OroCRM 上几乎 2 天后仍然没有更改未反映在 OroCRM 上 如何同时在每个更改中进行自动同步 None
  • 无法使用 UPDATE 更改 MySQL 上的用户密码

    在 MySql 5 7 17 下 上述指令不起作用 并且我总是没有收到任何反馈或以下错误消息 错误 1064 42000 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 UPDATE mysql user
  • 如何使用 ps -axl 查找 Linux 上运行的 Java 线程?

    我有一个正在运行的 JVM 有两个线程 是否可以使用 ps axl 在我的 Linux 操作系统上查看这些正在运行的线程 我试图找出操作系统赋予我的线程的优先级 有关此其他问题的更多信息here https stackoverflow co
  • Error 方法内的 fmt.Sprint(e) 产生的无限循环

    根据四十四十的回复这个问题 https stackoverflow com questions 27474907 error infinite loop fmt Sprint e 将会通知e Error 转换值e to a string 如
  • 更改 pandas 中箱线图的面色

    我需要更改使用绘制的箱线图的颜色pandas实用功能 我可以使用以下命令更改大多数属性color争论但不知道如何改变facecolor盒子的 有人知道该怎么做吗 import pandas as pd import numpy as np
  • 将 SAML 身份验证添加到 .net WebAPI

    我需要将 SAML 身份验证添加到我的 Web 应用程序 WebAPI 后端 Angular 前端 并使用 Azure AD 作为我的身份提供商 我计划使用 Sustainsys Saml2 库 但我不确定如何正确使用该库提供的方法 我已将
  • 计算 Modbus RTU CRC 16

    我正在实现一个软件 可以通过串行方式读取和写入 Modbus RTU 协议中的数据 为此 我需要计算字节字符串末尾的两个 CRC 字节 但我无法执行此操作 在网上搜索 我发现两个函数似乎可以正确计算 CRC WORD CRC16 const
  • 如何使用 Google API PHP 客户端库和 Youtube API V3 将视频上传到 YouTube?

    尝试简单地使用上传视频Google API PHP 客户端 最新版本 1 1 6 https github com google google api php client releases but Youtube API V3 中的代码
  • 填充/大小/边距,当使用 ToolstripControlHost 作为弹出控件时

    我正在使用 VB2008 Express 我一直在研究一个 弹出窗口 来选择日期范围 DateTimePicker 并不理想 因为其目的是选择一个日期范围 该范围始终是一整周 从星期日到星期六 控制效果很好 我对此感到非常自豪 我的问题与使