c# 在按钮上添加菜单

Add a Menu on the Button in c#

我想创建一个按钮,单击该按钮会显示一个菜单。我希望它看起来像这样(侧面有一个箭头):

我在 onClick 事件上尝试了以下代码:

Button btnSender = (Button)sender;
Point ptLowerLeft = new Point(0, btnSender.Height);
ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);
contextMenuStrip1.Show(ptLowerLeft);

但输出是这样的:

我怎样才能创建一个右边有箭头的按钮,单击时菜单会显示在它旁边?

你为什么不使用 menu 而不是 button 或者你可以添加一个带有小箭头的背景图像,你可以在悬停或点击按钮

非常简短的回答是,我认为您混淆了宽度和高度。只需交换线路

Point ptLowerLeft = new Point(0, btnSender.Height);

Point ptUpperRight = new Point(btnSender.Width, 0);

但是,通常还有更多工作要做。特别是,根据按钮的位置,上下文菜单可能会显示在屏幕的可见区域之外。我认为最简单的解决方案是使用工具栏控件。据我所知,有一个控件支持这种行为。

要添加到 Georg 的答案:要添加图像,您只需写:

button1.Image = Image.FromFile(yourImageFile); // or a resource etc..
button1.ImageAlign = ContentAlignment.MiddleRight;
button1.TextAlign = ContentAlignment.MiddleLeft;