0

我觉得默认的 ContextMenuStrip 非常有限,因为它只能包含按钮,而没有控件。我想了很长时间,我已经尝试过,使用表格,但它从来没有真正成功过。

我已经有了如何设置整个事情的想法,包括事件和项目。我唯一的问题是绘画方法。当您打开一个 ContextMenu (ContextMenuStrip) 时,您可以设置它在鼠标光标上的位置,它会在那里,即使这意味着它超出了活动表单。(所以我不能将控件类用作继承,因为它们只能将自己绘制为表单的一部分。现在我想使用表单类作为我的 ContextMenu 的基础,但是那些随机放置在屏幕上的。

所以我真正需要的是一个类(或类似的东西),它可以自己绘制,没有问题,并且可以准确地放置在屏幕上。

任何提示都会很好,谢谢。

疯子格雷格

4

2 回答 2

2

您的第一个陈述是错误的——您可以在 ContextMenuStrip 中有一个 TextBox 或一个 ComboBox。

MSDN ToolStripComboBox
MSDN ToolStripTextBox

当您的鼠标位于“在此处输入”框(有时很难单击)时,设计器会显示一个小的下拉箭头,可让您更改类型。

于 2009-12-09T16:10:42.667 回答
1

如果您希望允许在容器内以自上而下的方式显示任何类型的控件以进行定位...您始终可以使用 FlowLayoutPanel 制作自定义控件。使用它的属性 FlowDirection=TopDown 和 WrapContents=False 来保持垂直方法。这将处理您的“菜单”基础知识,并且您的新控件可以从每个控件公开您希望的任何事件。您还必须使用其 Location 属性处理显示面板和定位的逻辑。

我忘了解决在父表单之外绘图的问题。请注意,ContextMenus 很聪明,当它们到达父级的边界时,它们会远离它。从逻辑上讲,您应该能够通过任何鼠标单击以正确的方向(上/下或左/右)进行绘制。根据您对 Form 的尝试,设置 StartPosition=Manual 然后在调用 Show() 或 ShowDialog() 之前设置它的 Location 属性,分别对应于 MouseClick 事件参数中提供的 X 和 Y 参数。

于 2009-12-09T17:15:22.700 回答