TableLayoutPanel中单元格上的工具提示

时间:2014-04-06 20:45:38

标签: c# tablelayoutpanel mousehover

我正在构建一个简单的应用程序,以便使用.net库进行练习。基本上,我想用不同颜色的单元格填充表单。这很好用(我有一个列表中带有十六进制值的ColourSwatches):

private void AddListToTable()
{
    TableLayoutPanel tlp = new TableLayoutPanel();
    tlp.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset;
    tlp.RowCount = 5;
    tlp.GrowStyle = TableLayoutPanelGrowStyle.AddColumns;
    tlp.Padding = new Padding(1, 1, 4, 5);
    tlp.AutoSize = true;

    foreach (String colour in ColourSwatches)
    {
        Panel panel = new Panel();
        panel.BackColor = System.Drawing.ColorTranslator.FromHtml("#" + colour);
        panel.Size = new Size(100, 100);            
        tlp.Controls.Add(panel);
    }

    Form.Controls.Add(tlp);
}

我想添加的是能够将鼠标悬停在面板上并获取十六进制值以显示在工具提示窗口中。

实现这一目标的最简单方法是什么?

如果我的所有面板都没有使用相同的名称,我想我可以使用它,但我无法想到另一种方法。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,Panel对象没有开箱即用的工具提示属性。您可以使用许多插件来帮助解决,例如JQueryUI,Ajax工具包。

或者,TableRow和TableCell类具有工具提示属性,因此您可以使用表格创建颜色样本。

foreach (String colour in ColourSwatches)
{
    TableRow Row = new TableRow();
    Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#" + colour);
    Row.ToolTip = "mycolor";
    table.rows.Add(row);
}

在您的aspx页面中创建一个表:

<asp:Table runat="server" id="colortable"></asp:table>

然后在代码后面添加行到表行集合,如:

TableRow newrow = new TableRow();
colortable.Rows.Add(newrow);

可以将单元格添加到行单元格集合中,如:

TableCell newcell = new TableCell();
newrow.Cells.Add(newcell);

错误表明您正在将TableCell直接添加到页面控件集合中。需要将TableCell添加到TableRow。并将TableRow添加到表中。希望这会有所帮助。