Jae*_*aex 6 .net c# toolstripitem winforms

在屏幕截图中,我用绿色矩形标记了空白空间,我希望在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;
}
Run Code Online (Sandbox Code Playgroud)
正如上面回答的,这个空间是为“打开子菜单”箭头保留的,一般来说,我不建议触摸这个空间,但当然可以删除该空间。实际上有几种方法可以做到这一点,但它们都需要一些编码。这是最简单方法的代码片段,但是您必须知道预期宽度(可以通过 ToolstripItem.GetPreferredSize 计算):
private void RecentButton_DropDownOpening(object sender, EventArgs e)
{
ToolStripDropDownItem RecentButton = (ToolStripDropDownItem)sender;
RecentButton.DropDown.SuspendLayout();
try
{
RecentButton.DropDownItems.Clear();
// Populate items
RecentButton.DropDown.MinimumSize = new Size(RecentButton.Bounds.Right - DisplayRectangle.Left, 0);
RecentButton.DropDown.MaximumSize = RecentButton.DropDown.MinimumSize;
}
finally
{
RecentButton.DropDown.ResumeLayout();
}
}
Run Code Online (Sandbox Code Playgroud)
ToolStip 引擎通常非常灵活,当您了解其内部结构时,可以使用它实现非常有趣的事情。
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |