c# - 如何删除 ToolStripMenuItem 中的右侧空白区域

标签 c# .net winforms toolstripitem

ss

在屏幕截图中,我用绿色矩形标记了空白区域,我希望 ToolStripMenuItem 中的左右空间大小相等,但右侧有更大的空白区域,我无法删除。

代码:

    private void UpdateWorkflowsMenu()
    {
        ((ToolStripDropDownMenu)tsddbWorkflows.DropDown).ShowImageMargin = false;

        tsddbWorkflows.DropDownItems.Clear();

        Program.HotkeyManager.Hotkeys.ForEach<HotkeySettings>(x =>
        {
            if (x.TaskSettings.Job != HotkeyType.None && (!Program.Settings.WorkflowsOnlyShowEdited || !x.TaskSettings.IsUsingDefaultSettings))
            {
                ToolStripMenuItem tsmi = new ToolStripMenuItem(x.TaskSettings.Description);
                if (x.HotkeyInfo.IsValidHotkey) tsmi.ShortcutKeyDisplayString = " " + x.HotkeyInfo.ToString();
                tsmi.Click += (sender, e) => HandleTask(x.TaskSettings);
                tsddbWorkflows.DropDownItems.Add(tsmi);
            }
        });

        tsddbWorkflows.Visible = tsddbWorkflows.DropDownItems.Count > 0;
    }

最佳答案

VB版(实际上箭头有18个像素:大小10个,边距8个,边距留2个像素)

Parent.DropDown.GetType.GetField("ArrowPadding", 
Reflection.BindingFlags.NonPublic Or 
Reflection.BindingFlags.Static).SetValue(Nothing, New Padding(0, 0, -16, 0))

关于c# - 如何删除 ToolStripMenuItem 中的右侧空白区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23724662/

相关文章:

c# - C# 中的委托(delegate)和 F# 中作为第一类值的函数有什么区别?

c# - 在 C# 中实现 2 个相似的接口(interface)

.net - 使用 Installshield 2010 检查 .NET Framework 4.5 是否安装

c# - 如何将报告从 Microsoft.Reporting.WinForms.ReportViewer v11 导出到 .xls 文件

c# - 在 C# 中显示密码文本框的纯文本

c# - 在 AccountController 中使用依赖注入(inject)的问题

c# - 如何在我的所有属性(property)中使用 “distinct”

c# - 如何从泛型类或方法的成员获取 T 的类型

c# - 如何在避免间接调用的同时编写泛型代码?

c# - WebBrowser 控件更改属性