我有一个包含26个项目的系统托盘上下文菜单和一个附加的ToolStripTextBox
菜单项。当用户在过滤器文本框中输入文本时,它会在用户键入内容时连续过滤菜单项,并通过将ToolStripMenuItem
Visible property
设置为false
即时隐藏类别。
工作正常!
问题是,当它被过滤时,上下文菜单的高度从底部到顶部变短。菜单的原点在右上角,导致其向上收缩。由于它是与系统任务栏相关的上下文菜单,因此我希望它会缩小(底部重力)。
如何做到这一点?
最佳答案
仍不确定是否有“适当的”内置方法来执行此操作...
同时,这是一种黑客,只要大小改变,它就会更改ContextMenuStrip的Bounds()。它只是简单地上下移动ContextMenuStrip,无论高度如何变化。我已经连接了ContextMenuStrip的Opened()和SizeChanged()事件,并将最后一个Bounds()存储在类级别的“ lastBounds”变量中:
private Rectangle lastBounds;
private void contextMenuStrip1_Opened(object sender, EventArgs e)
{
lastBounds = contextMenuStrip1.Bounds;
}
private void contextMenuStrip1_SizeChanged(object sender, EventArgs e)
{
Rectangle rc = contextMenuStrip1.Bounds;
int diff = lastBounds.Height - rc.Height;
if (diff > 0)
{
contextMenuStrip1.Bounds = new Rectangle(new Point(rc.X, rc.Y + diff), rc.Size);
lastBounds = contextMenuStrip1.Bounds;
}
else
{
contextMenuStrip1.Bounds = new Rectangle(new Point(rc.X, rc.Y - diff), rc.Size);
lastBounds = contextMenuStrip1.Bounds;
}
}
关于c# - 动态过滤上下文菜单C#并调整其大小,同时使其重力降至底部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16320338/