C#当鼠标光标悬停在ControlLabel中时,它会显示项目列表吗?这是什么样的控制



我有一个标签控件,当鼠标光标在它周围悬停大约1秒时,它将以文本格式显示项目列表(项目要么是纯文本,要么也是一个控件)。这就像在网站主页/联系我们/关于我们/帮助。我将使用什么样的控制?

比如。www.ebay.com。在"我的易趣"下,它会向您显示项目,例如摘要/出价/列表/消息。。。等等。

您所看到的最好由ToolTip实现。

要将ToolTip添加到控件,通常需要执行以下操作:

  • 将工具箱中的ToolTip添加到Form
  • 现在,表单上的每个控件都作为属性窗格中的新属性字段:"ToolTip" on "yourToolTipName"
  • 为要显示工具提示的每个控件设置工具提示文本

这真的很简单。因此,许多人认为这就是ToolTip所能做的

但它可以被创建动态修改,并以多种方式设置样式。显示项目列表完全没有问题。。

要动态加载数据,请对Label:的MouseHover事件进行编码

private void yourLabel_MouseHover(object sender, EventArgs e)
{
toolTip1.SetToolTip(yourLabel, yourData);
}

当然,您可能需要调用一个函数来加载每个Labels..的正确数据和当前数据:CCD_ 10。

如果您愿意,您可以轻松地拥有ToolTip。首先对其Popup事件进行编码:

private void toolTip1_Popup(object sender, PopupEventArgs e)
{
toolTip1.BackColor = Color.LightGoldenrodYellow;  // pick a Color if you want to
toolTip1.OwnerDraw = true;      
}

然后Draw事件:

private void toolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
using (Font font = new Font("Consolas", e.Font.SizeInPoints))
{
e.DrawBackground();
e.DrawBorder();
e.Graphics.DrawString(e.ToolTipText, font, Brushes.DarkMagenta, e.Bounds);
}

请注意,ToolTip将自动调整大小以显示文本。还要注意,您可以嵌入n字符来创建换行符。

我选择了等宽字体Consolas,这样我就可以创建对齐良好的文本列。还要注意,如果您想放大字体,您应该通过额外的行和/或空间添加足够的空间,这是因为ToolTip区域的大小是根据其原始字体大小计算的,您不能为其选择不同的字体。请参阅此处了解更多信息。。

还要注意,您根本不需要在设计器中设置属性。MouseHover可以满足您的所有需求。。

创建ContextMenuStrip,为项目设置事件处理程序:

var contextMenu = new ContextMenuStrip();
contextMenu.Items.Add("Item 1");
contextMenu.Items.Add("Item 2");
contextMenu.Items.Add("Item 3");

您的控制标签:

var label = new Label { Parent = this, BorderStyle = BorderStyle.FixedSingle, Text = "Test" };

手动显示菜单:

label.MouseHover += (s, e) =>
{
contextMenu.Show(label, 0, label.Height);
};

最新更新