首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除ToolStripControlHost周围的空格

删除ToolStripControlHost周围的空格
EN

Stack Overflow用户
提问于 2011-12-23 06:00:22
回答 3查看 2.9K关注 0票数 3

我正在尝试删除toolstripcontrolhost主机控件周围的空白,该控件承载上下文菜单中的日历控件。请参阅附件中的图像和代码。

VB:

代码语言:javascript
复制
    Dim menuItem As ToolStripMenuItem = New ToolStripMenuItem("MyMenu")

    Dim calControl As New MonthCalendar

    Dim controlHost As ToolStripControlHost = New ToolStripControlHost(calControl)

    controlHost.Margin = Padding.Empty
    controlHost.Padding = Padding.Empty

    ContextMenuStrip1.Items.Add(menuItem)
    menuItem.DropDown.Items.Add(controlHost)

C#:

代码语言:javascript
复制
ToolStripMenuItem menuItem = new ToolStripMenuItem("MyMenu");

MonthCalendar calControl = new MonthCalendar();

ToolStripControlHost controlHost = new ToolStripControlHost(calControl);

controlHost.Margin = Padding.Empty;
controlHost.Padding = Padding.Empty;

ContextMenuStrip1.Items.Add(menuItem);
menuItem.DropDown.Items.Add(controlHost);

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-23 07:54:48

在这种情况下,ToolStripDropDown可能会工作得更好:

代码语言:javascript
复制
MonthCalendar calControl = new MonthCalendar();
ToolStripControlHost controlHost = new ToolStripControlHost(calControl);
controlHost.Margin = Padding.Empty;
controlHost.Padding = Padding.Empty;
ToolStripDropDown toolDrop = new ToolStripDropDown();
toolDrop.Padding = Padding.Emtpy;
toolDrop.Margin = Padding.Empty;
toolDrop.Items.Add(controlHost);

toolDrop.Show(this, location);
票数 3
EN

Stack Overflow用户

发布于 2015-08-21 03:50:22

尝尝这个

代码语言:javascript
复制
ToolStripMenuItem menuItem = new ToolStripMenuItem("MyMenu");

MonthCalendar calControl = new MonthCalendar();

ToolStripControlHost controlHost = new ToolStripControlHost(calControl);

controlHost.Margin = Padding.Empty;
controlHost.Padding = Padding.Empty;

ContextMenuStrip1.Items.Add(menuItem);
ToolStripDropDown dropDown = new ToolStripDropDown();
dropDown.Items.Add(controlHost);
menuItem.DropDown = dropDown;
票数 0
EN

Stack Overflow用户

发布于 2016-03-24 21:52:20

我发现这个问题的大多数答案都重定向开发人员使用ToolStripDropDown 而不是上下文菜单条的。然而,对于我的项目,我想要一个已经很复杂的上下文菜单的下拉列表。在我的项目早期,对于不同的弹出窗口需要,我从这里得到了一个简单的弹出窗口包装器:http://www.codeproject.com/Articles/17502/Simple-Popup-Control。这个简单的弹出窗口继承自ToolStripDropDown。下面是核心的VB代码:

代码语言:javascript
复制
Public Class PopupBox
    Inherits ToolStripDropDown

    Private mHost As ToolStripControlHost = Nothing

    Public ReadOnly Property Host As ToolStripControlHost
        Get
            Return mHost
        End Get
    End Property

    Public Sub New(content As Control)
        MyBase.New()

        Me.ResizeRedraw = True
        Me.Margin = Padding.Empty
        Me.Padding = Padding.Empty
        Me.AutoSize = True

        Me.mHost = New ToolStripControlHost(content)

        Me.mHost.Margin = Padding.Empty
        Me.mHost.Padding = Padding.Empty
        Me.mHost.AutoSize = True

        Me.Items.Add(Me.mHost)

    End Sub

End Class

事实证明,这个弹出式菜单非常适合按原样应用下拉菜单(没有填充)到现有的上下文菜单。以下是步骤:

  1. 像往常一样将ToolStripMenuItem添加到上下文菜单中。在本例中,项被命名为"ToolStripMenuItem1“。在适当的位置(上下文菜单的构造函数或打开事件)中,添加以下代码以替换ENTIRELY

ToolStripMenuItem1.DropDown = New PopupBox(<your control here>)

显然,如果继承的对象没有访问protected ResizeRedraw属性并将所述值应用于PopupBox的构造函数中的MarginPaddingAutoSize属性,ContextMenuStrip仍然会在下拉列表的左侧和右侧应用填充。所以没有捷径可走。

注释:CodeProject文章指出了一个GNU License,并且对PopupBox可以承载的内容有一些警告,因此请阅读文章以获取更多详细信息。

相关/源链接:

  • http://www.codeproject.com/Articles/17502/Simple-Popup-Control
  • http://lukesw.net/articles/SimplePopup.aspx
  • http://luminous.codeplex.com/ (请参阅此处的"Popup

“链接)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8610193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档