Перемещение мыши по ячейке моей таблицы tablelayoutpanel

У меня проблема с моим TLP. Я хотел бы, чтобы цвет ячейки менялся, когда мышь перемещается по ячейкам. Я пробовал разные вещи, но ничего не работает. У вас есть идея, как я могу решить эту проблему?


person Sebna665    schedule 15.02.2016    source источник


Ответы (1)


С TLP не очень приятно работать.

Вы можете использовать TableLayoutCellPaintEventArgs, чтобы узнать о ячейке во время рисования и преобразовать положение курсора на экране в относительное с помощью PointToClient..

Вот пример, но я не уверен, насколько хорошо он будет работать для больших TLP:

private void tableLayoutPanel1_MouseMove(object sender, MouseEventArgs e)
{
    tableLayoutPanel1.Invalidate();
}

private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
    Point pt = tableLayoutPanel1.PointToClient(Cursor.Position);

    using (SolidBrush brush = new SolidBrush(e.CellBounds.Contains(pt) ? 
                                             Color.Red : tableLayoutPanel1.BackColor))
        e.Graphics.FillRectangle(brush, e.CellBounds);
}

Это закрашивает ячейку, над которой находится курсор, и сбрасывается, когда он уходит. Если вы хотите сохранить измененный цвет, вам нужно будет сохранить его в 2d-массиве и использовать его в качестве альтернативного цвета. Детали будут зависеть только от того, чего вы хотите достичь.

Вы также можете изучить этот пост,

person TaW    schedule 15.02.2016
comment
Спасибо за вашу помощь TaW! - person Sebna665; 17.02.2016