【发布时间】:2016-08-20 02:25:34
【问题描述】:
我有一个以编程方式创建的 TableLayoutPanel,它的每个单元格都包含一个面板。每个面板都有一个自定义标签。 (Labels 的 Enabled 属性设置为 false;不确定这是否会有所不同。)我想在用户将鼠标悬停在 Label 上时显示其文本。
根据我的阅读,工具提示是实现此目的的好方法,但我无法让它发挥作用。
TableLayoutPanel 简称为“tlp”,是表单的成员,便于访问(与 ToolTip 一样,名称为“toolTip”)。
现在我只是想获取任何类型的文本。一旦我可以让它工作,我将在这里用标签的文本替换我的字符串。
private void hoverOverSpace(object sender, EventArgs e)
{
int row = tlp.GetRow((Panel)sender);
int col = tlp.GetColumn((Panel)sender);
toolTip.Show("Does this work?", tlp.GetControlFromPosition(col, row).Controls[0]);
//toolTip.Show("Does this work?", tlp.GetControlFromPosition(col, row));
}
我尝试显示工具提示都没有成功。我做错了什么/有没有更好的方法来完成我想要完成的事情?
编辑:我尝试将工具提示添加到每个面板,但仍然没有发生任何事情
// Add Panels to TableLayoutPanel
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
// Create new Panel
Panel space = new Panel()
{
Size = new Size(45, 45),
Dock = DockStyle.Fill,
Margin = new Padding(0)
};
space.MouseClick += new MouseEventHandler(clickOnSpace);
CustomLabel info = new CustomLabel(false, 0, Color.White); // Create new CustomLabel
space.Controls.Add(info); // Add CustomLabel to Panel
tlp.Controls.Add(space, j, i); // Add Panel to TableLayoutPanel
toolTip = new ToolTip();
toolTip.SetToolTip(space, info.Text);
}
}
【问题讨论】:
-
“
Labels'Enabled属性设置为false;不确定这是否会有所作为” - 它确实有所作为。不显示禁用控件的工具提示。不过你可以使用workarounds。 -
尝试在没有事件处理程序的情况下设置面板的工具提示。如果您将鼠标移到面板上(但还没有移到标签上),您会看到它。
-
似乎也不起作用(参见编辑后的代码)。
-
为什么标签被禁用?为什么不简单地启用它们并将工具提示分配给标签?
标签: c# winforms tooltip tablelayoutpanel